Full Code of cuhk-eda/cu-gr for AI

dac2020 9b1aa8a7db4e cached
391 files
12.9 MB
680.7k tokens
1693 symbols
1 requests
Download .txt
Showing preview only (2,721K chars total). Download the full file or copy to clipboard to get everything.
Repository: cuhk-eda/cu-gr
Branch: dac2020
Commit: 9b1aa8a7db4e
Files: 391
Total size: 12.9 MB

Directory structure:
gitextract_gkk6unka/

├── .gitignore
├── LICENSE
├── README.md
├── drcu
├── ispd18eval/
│   ├── README
│   ├── ispd18eval.sh
│   ├── ispd18eval.tcl
│   ├── ispd18eval.w
│   └── ispd18eval_bin
├── ispd19eval/
│   ├── README
│   ├── ispd19eval.sh
│   ├── ispd19eval.tcl
│   ├── ispd19eval.w
│   └── ispd19eval_bin
├── rsyn/
│   ├── .gitrepo
│   ├── LICENSE
│   ├── README.md
│   ├── include/
│   │   ├── def5.8/
│   │   │   ├── defiAlias.hpp
│   │   │   ├── defiAssertion.hpp
│   │   │   ├── defiBlockage.hpp
│   │   │   ├── defiComponent.hpp
│   │   │   ├── defiDebug.hpp
│   │   │   ├── defiDefs.hpp
│   │   │   ├── defiFPC.hpp
│   │   │   ├── defiFill.hpp
│   │   │   ├── defiGroup.hpp
│   │   │   ├── defiIOTiming.hpp
│   │   │   ├── defiKRDefs.hpp
│   │   │   ├── defiMisc.hpp
│   │   │   ├── defiNet.hpp
│   │   │   ├── defiNonDefault.hpp
│   │   │   ├── defiPartition.hpp
│   │   │   ├── defiPath.hpp
│   │   │   ├── defiPinCap.hpp
│   │   │   ├── defiPinProp.hpp
│   │   │   ├── defiProp.hpp
│   │   │   ├── defiPropType.hpp
│   │   │   ├── defiRegion.hpp
│   │   │   ├── defiRowTrack.hpp
│   │   │   ├── defiScanchain.hpp
│   │   │   ├── defiSite.hpp
│   │   │   ├── defiSlot.hpp
│   │   │   ├── defiTimingDisable.hpp
│   │   │   ├── defiUser.hpp
│   │   │   ├── defiUtil.hpp
│   │   │   ├── defiVia.hpp
│   │   │   ├── defrCallBacks.hpp
│   │   │   ├── defrData.hpp
│   │   │   ├── defrReader.hpp
│   │   │   ├── defrSettings.hpp
│   │   │   ├── defwWriter.hpp
│   │   │   ├── defwWriterCalls.hpp
│   │   │   └── defzlib.hpp
│   │   └── lef5.8/
│   │       ├── lefiArray.hpp
│   │       ├── lefiCrossTalk.hpp
│   │       ├── lefiDebug.hpp
│   │       ├── lefiDefs.hpp
│   │       ├── lefiEncryptInt.hpp
│   │       ├── lefiKRDefs.hpp
│   │       ├── lefiLayer.hpp
│   │       ├── lefiMacro.hpp
│   │       ├── lefiMisc.hpp
│   │       ├── lefiNonDefault.hpp
│   │       ├── lefiProp.hpp
│   │       ├── lefiPropType.hpp
│   │       ├── lefiUnits.hpp
│   │       ├── lefiUser.hpp
│   │       ├── lefiUtil.hpp
│   │       ├── lefiVia.hpp
│   │       ├── lefiViaRule.hpp
│   │       ├── lefrCallBacks.hpp
│   │       ├── lefrData.hpp
│   │       ├── lefrReader.hpp
│   │       ├── lefrSettings.hpp
│   │       ├── lefwWriter.hpp
│   │       ├── lefwWriterCalls.hpp
│   │       └── lefzlib.hpp
│   ├── lib/
│   │   └── linux/
│   │       ├── libdef.a
│   │       └── liblef.a
│   └── src/
│       └── rsyn/
│           ├── 3rdparty/
│           │   └── json/
│           │       └── json.hpp
│           ├── core/
│           │   ├── Rsyn.h
│           │   ├── RsynTypes.h
│           │   ├── dscp/
│           │   │   ├── LibraryCell.h
│           │   │   └── LibraryModule.h
│           │   ├── infra/
│           │   │   ├── Attribute.h
│           │   │   ├── Exception.h
│           │   │   ├── List.h
│           │   │   ├── Observer.h
│           │   │   ├── RangeBasedLoop.h
│           │   │   └── RawPointer.h
│           │   └── obj/
│           │       ├── data/
│           │       │   ├── Arc.h
│           │       │   ├── Cell.h
│           │       │   ├── Design.h
│           │       │   ├── Instance.h
│           │       │   ├── Library.h
│           │       │   ├── LibraryArc.h
│           │       │   ├── LibraryCell.h
│           │       │   ├── LibraryModule.h
│           │       │   ├── LibraryPin.h
│           │       │   ├── Module.h
│           │       │   ├── Net.h
│           │       │   ├── Object.h
│           │       │   ├── Pin.h
│           │       │   └── Port.h
│           │       ├── decl/
│           │       │   ├── Arc.h
│           │       │   ├── Cell.h
│           │       │   ├── Design.h
│           │       │   ├── Instance.h
│           │       │   ├── Library.h
│           │       │   ├── LibraryArc.h
│           │       │   ├── LibraryCell.h
│           │       │   ├── LibraryModule.h
│           │       │   ├── LibraryPin.h
│           │       │   ├── Module.h
│           │       │   ├── Net.h
│           │       │   ├── Object.h
│           │       │   ├── Pin.h
│           │       │   └── Port.h
│           │       └── impl/
│           │           ├── Arc.h
│           │           ├── Cell.h
│           │           ├── Design.h
│           │           ├── Instance.h
│           │           ├── Library.h
│           │           ├── LibraryArc.h
│           │           ├── LibraryCell.h
│           │           ├── LibraryModule.h
│           │           ├── LibraryPin.h
│           │           ├── Module.h
│           │           ├── Net.h
│           │           ├── Object.h
│           │           ├── Pin.h
│           │           └── Port.h
│           ├── db/
│           │   ├── Database.cpp
│           │   ├── Database.h
│           │   ├── Serializable.h
│           │   └── SerializationStream.h
│           ├── export/
│           │   └── Rsyn/
│           │       ├── DesignObserver
│           │       ├── PhysicalDesign
│           │       ├── PhysicalDesignObserver
│           │       ├── Point
│           │       ├── Polygon
│           │       ├── Rect
│           │       ├── RoutingGuide
│           │       ├── Scenario
│           │       ├── Session
│           │       └── Timer
│           ├── io/
│           │   ├── legacy/
│           │   │   ├── Legacy.h
│           │   │   └── PlacerInternals.h
│           │   ├── parser/
│           │   │   ├── guide-ispd18/
│           │   │   │   ├── GuideDescriptor.h
│           │   │   │   ├── GuideParser.cpp
│           │   │   │   └── GuideParser.h
│           │   │   ├── lef_def/
│           │   │   │   ├── DEFControlParser.cpp
│           │   │   │   ├── DEFControlParser.h
│           │   │   │   ├── LEFControlParser.cpp
│           │   │   │   └── LEFControlParser.h
│           │   │   ├── parser_helper.cpp
│           │   │   └── parser_helper.h
│           │   └── reader/
│           │       ├── ISPD2018Reader.cpp
│           │       ├── ISPD2018Reader.h
│           │       ├── PopulateRsyn.cpp
│           │       └── PopulateRsyn.h
│           ├── ispd18/
│           │   ├── Guide.h
│           │   ├── RoutingGuide.cpp
│           │   └── RoutingGuide.h
│           ├── phy/
│           │   ├── PhysicalDesign.h
│           │   ├── PhysicalRouting.cpp
│           │   ├── PhysicalRouting.h
│           │   ├── PhysicalService.cpp
│           │   ├── PhysicalService.h
│           │   ├── infra/
│           │   │   ├── PhysicalAttribute.h
│           │   │   └── PhysicalObserver.h
│           │   ├── obj/
│           │   │   ├── data/
│           │   │   │   ├── LayerViaManagerData.h
│           │   │   │   ├── PhysicalDesign.h
│           │   │   │   ├── PhysicalDieData.h
│           │   │   │   ├── PhysicalGCellData.h
│           │   │   │   ├── PhysicalGroupData.h
│           │   │   │   ├── PhysicalInstanceData.h
│           │   │   │   ├── PhysicalLayerData.h
│           │   │   │   ├── PhysicalLibraryCellData.h
│           │   │   │   ├── PhysicalLibraryPinData.h
│           │   │   │   ├── PhysicalNetData.h
│           │   │   │   ├── PhysicalObject.h
│           │   │   │   ├── PhysicalObstacleData.h
│           │   │   │   ├── PhysicalPinData.h
│           │   │   │   ├── PhysicalPinGeometryData.h
│           │   │   │   ├── PhysicalPinLayerData.h
│           │   │   │   ├── PhysicalRegionData.h
│           │   │   │   ├── PhysicalRoutingGridData.h
│           │   │   │   ├── PhysicalRoutingPointData.h
│           │   │   │   ├── PhysicalRowData.h
│           │   │   │   ├── PhysicalSiteData.h
│           │   │   │   ├── PhysicalSpacingData.h
│           │   │   │   ├── PhysicalSpacingRuleData.h
│           │   │   │   ├── PhysicalSpacingTableData.h
│           │   │   │   ├── PhysicalSpecialNetData.h
│           │   │   │   ├── PhysicalSpecialWireData.h
│           │   │   │   ├── PhysicalTracksData.h
│           │   │   │   ├── PhysicalViaData.h
│           │   │   │   ├── ViaGeometryData.h
│           │   │   │   └── ViaRuleData.h
│           │   │   ├── decl/
│           │   │   │   ├── LayerViaManager.h
│           │   │   │   ├── PhysicalCell.h
│           │   │   │   ├── PhysicalDesign.h
│           │   │   │   ├── PhysicalDie.h
│           │   │   │   ├── PhysicalGCell.h
│           │   │   │   ├── PhysicalGroup.h
│           │   │   │   ├── PhysicalInstance.h
│           │   │   │   ├── PhysicalLayer.h
│           │   │   │   ├── PhysicalLibraryCell.h
│           │   │   │   ├── PhysicalLibraryPin.h
│           │   │   │   ├── PhysicalModule.h
│           │   │   │   ├── PhysicalNet.h
│           │   │   │   ├── PhysicalObstacle.h
│           │   │   │   ├── PhysicalPin.h
│           │   │   │   ├── PhysicalPinGeometry.h
│           │   │   │   ├── PhysicalPinLayer.h
│           │   │   │   ├── PhysicalPort.h
│           │   │   │   ├── PhysicalRegion.h
│           │   │   │   ├── PhysicalRoutingGrid.h
│           │   │   │   ├── PhysicalRoutingPoint.h
│           │   │   │   ├── PhysicalRow.h
│           │   │   │   ├── PhysicalSite.h
│           │   │   │   ├── PhysicalSpacing.h
│           │   │   │   ├── PhysicalSpecialNet.h
│           │   │   │   ├── PhysicalSpecialWire.h
│           │   │   │   ├── PhysicalTracks.h
│           │   │   │   ├── PhysicalVia.h
│           │   │   │   ├── PhysicalViaGeometry.h
│           │   │   │   ├── PhysicalViaRule.h
│           │   │   │   ├── PhysicalViaRuleBase.h
│           │   │   │   └── PhysicalViaRuleGenerate.h
│           │   │   └── impl/
│           │   │       ├── LayerViaManager.h
│           │   │       ├── PhysicalCell.h
│           │   │       ├── PhysicalDesign.cpp
│           │   │       ├── PhysicalDesign.h
│           │   │       ├── PhysicalDie.h
│           │   │       ├── PhysicalGCell.h
│           │   │       ├── PhysicalGroup.h
│           │   │       ├── PhysicalInstance.h
│           │   │       ├── PhysicalLayer.h
│           │   │       ├── PhysicalLibraryCell.h
│           │   │       ├── PhysicalLibraryPin.h
│           │   │       ├── PhysicalModule.h
│           │   │       ├── PhysicalNet.h
│           │   │       ├── PhysicalObstacle.h
│           │   │       ├── PhysicalPin.h
│           │   │       ├── PhysicalPinGeometry.h
│           │   │       ├── PhysicalPinLayer.h
│           │   │       ├── PhysicalPort.h
│           │   │       ├── PhysicalRegion.h
│           │   │       ├── PhysicalRoutingGrid.h
│           │   │       ├── PhysicalRoutingPoint.h
│           │   │       ├── PhysicalRow.h
│           │   │       ├── PhysicalSite.h
│           │   │       ├── PhysicalSpacing.h
│           │   │       ├── PhysicalSpecialNet.h
│           │   │       ├── PhysicalSpecialWire.h
│           │   │       ├── PhysicalTracks.h
│           │   │       ├── PhysicalVia.h
│           │   │       ├── PhysicalViaGeometry.h
│           │   │       ├── PhysicalViaRule.h
│           │   │       ├── PhysicalViaRuleBase.h
│           │   │       └── PhysicalViaRuleGenerate.h
│           │   └── util/
│           │       ├── DefDescriptors.h
│           │       ├── LefDescriptors.h
│           │       ├── PhysicalLayerUtil.cpp
│           │       ├── PhysicalTransform.cpp
│           │       ├── PhysicalTransform.h
│           │       ├── PhysicalTypes.h
│           │       └── PhysicalUtil.h
│           ├── session/
│           │   ├── Reader.h
│           │   ├── Service.h
│           │   ├── Session.cpp
│           │   └── Session.h
│           ├── setup/
│           │   ├── reader.cpp
│           │   └── service.cpp
│           └── util/
│               ├── Array.h
│               ├── AsciiProgressBar.h
│               ├── Bounds.h
│               ├── Color.h
│               ├── Colorize.h
│               ├── Debug.h
│               ├── DoubleRectangle.h
│               ├── Environment.h
│               ├── Exception.h
│               ├── FloatRectangle.h
│               ├── FloatingPoint.h
│               ├── Json.h
│               ├── MD5.h
│               ├── MemoryUsage.h
│               ├── Proxy.h
│               ├── RangeBasedLoop.h
│               ├── Stipple.h
│               ├── Stopwatch.h
│               ├── String.h
│               ├── ThreadPool.h
│               ├── TristateFlag.h
│               ├── Units.h
│               ├── dbu.h
│               ├── dim.h
│               ├── double2.h
│               ├── float2.h
│               └── geometry/
│                   ├── Point.h
│                   ├── Polygon.cpp
│                   ├── Polygon.h
│                   ├── Rect.cpp
│                   └── Rect.h
├── scripts/
│   ├── build.py
│   ├── gprof2dot.py
│   ├── run.py
│   └── run_base.py
├── src/
│   ├── .clang-format
│   ├── CMakeLists.txt
│   ├── db/
│   │   ├── CutLayer.cpp
│   │   ├── CutLayer.h
│   │   ├── Database.cpp
│   │   ├── Database.h
│   │   ├── GeoPrimitive.cpp
│   │   ├── GeoPrimitive.h
│   │   ├── LayerList.cpp
│   │   ├── LayerList.h
│   │   ├── MetalLayer.cpp
│   │   ├── MetalLayer.h
│   │   ├── Net.cpp
│   │   ├── Net.h
│   │   ├── RouteGrid.cpp
│   │   ├── RouteGrid.h
│   │   ├── RsynService.h
│   │   ├── Setting.cpp
│   │   ├── Setting.h
│   │   ├── Stat.cpp
│   │   └── Stat.h
│   ├── flute/
│   │   ├── ChangeLog.txt
│   │   ├── Readme
│   │   ├── dist.c
│   │   ├── dist.h
│   │   ├── dl.c
│   │   ├── dl.h
│   │   ├── err.c
│   │   ├── err.h
│   │   ├── flute.c
│   │   ├── flute.h
│   │   ├── flute_mst.c
│   │   ├── global.h
│   │   ├── heap.c
│   │   ├── heap.h
│   │   ├── license.txt
│   │   ├── memAlloc.c
│   │   ├── memAlloc.h
│   │   ├── mst2.c
│   │   ├── mst2.h
│   │   ├── neighbors.c
│   │   └── neighbors.h
│   ├── global.h
│   ├── gr_db/
│   │   ├── GCell.cpp
│   │   ├── GCell.h
│   │   ├── GrDatabase.cpp
│   │   ├── GrDatabase.h
│   │   ├── GrGeoPrimitive.cpp
│   │   ├── GrGeoPrimitive.h
│   │   ├── GrNet.cpp
│   │   ├── GrNet.h
│   │   ├── GrRouteGrid.cpp
│   │   ├── GrRouteGrid.h
│   │   ├── GridTopo.cpp
│   │   └── GridTopo.h
│   ├── main.cpp
│   ├── multi_net/
│   │   ├── CongestionMap.cpp
│   │   ├── CongestionMap.h
│   │   ├── Router.cpp
│   │   ├── Router.h
│   │   ├── Scheduler.cpp
│   │   └── Scheduler.h
│   ├── single_net/
│   │   ├── GenGuide.cpp
│   │   ├── GenGuide.h
│   │   ├── GridGraph.cpp
│   │   ├── GridGraph.h
│   │   ├── InitRoute.cpp
│   │   ├── InitRoute.h
│   │   ├── MazeRoute.cpp
│   │   ├── MazeRoute.h
│   │   ├── SingleNetRouter.cpp
│   │   └── SingleNetRouter.h
│   └── utils/
│       ├── enum.h
│       ├── geo.h
│       ├── log.cpp
│       ├── log.h
│       ├── prettyprint.h
│       └── utils.h
└── toys/
    └── iccad2019c/
        └── ispd18_sample/
            ├── ispd18_sample.input.def
            └── ispd18_sample.input.lef

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
.vscode
build
debug
run*/
scripts/__pycache__
tags



================================================
FILE: LICENSE
================================================
READ THIS LICENSE AGREEMENT CAREFULLY BEFORE USING THIS PRODUCT. BY USING THIS PRODUCT YOU INDICATE YOUR ACCEPTANCE OF THE TERMS OF THE FOLLOWING AGREEMENT. THESE TERMS APPLY TO YOU AND ANY SUBSEQUENT LICENSEE OF THIS PRODUCT.



License Agreement for CUGR



Copyright (c) 2020 by The Chinese University of Hong Kong



All rights reserved



CU-SD LICENSE (adapted from the original BSD license) Redistribution of the any code, with or without modification, are permitted provided that the conditions below are met. 



Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.



Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.



Neither the name nor trademark of the copyright holder or the author may be used to endorse or promote products derived from this software without specific prior written permission.



Users are entirely responsible, to the exclusion of the author, for compliance with (a) regulations set by owners or administrators of employed equipment, (b) licensing terms of any other software, and (c) local, national, and international regulations regarding use, including those regarding import, export, and use of encryption software.



THIS FREE SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR ANY CONTRIBUTOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, EFFECTS OF UNAUTHORIZED OR MALICIOUS NETWORK ACCESS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


================================================
FILE: README.md
================================================
CUGR
======================================
CUGR is a VLSI global routing tool developed by the research team supervised by Prof. Evangeline F. Y. Young at The Chinese University of Hong Kong (CUHK).
Different from previous global routers whose quality is usually measured by wirelength and resource overflow,
CUGR is a detailed routability-driven global router and its solution quality is solely determined by the final detailed routing results.
In particular, our global router adopts several efficient and effective methods to generate a set of connected rectangles to guide the detailed router:
* A sophisticated probability-based cost scheme
* An optimal 3D pattern routing technique that combines 2D pattern routing and layer assignment
* A multi-level maze routing utilizes two levels of routing
* A patching technique that adds useful route guides to further improve the detailed routability.
* ...

More details are in the following paper:

* Jinwei Liu, Chak-Wa Pui, Fangzhou Wang, Evangeline F. Y. Young,
["CUGR: Detailed-Routability-Driven 3D Global Routing with Probabilistic Resource Model"](https://ieeexplore.ieee.org/document/9218646),
ACM/IEEE Design Automation Conference (DAC), San Francisco, CA, USA, July 19-23, 2020.

(CUGR supports ICCAD'19 benchmarks ([v2](http://iccad-contest.org/2019/Problem_C/iccad19_benchmarks_v2.tar.gz), [hidden](http://iccad-contest.org/2019/Problem_C/iccad19_hidden_benchmarks.tar.gz)).
This version of code is consistent with the DAC paper.)

## 1. How to Build

**Step 1:** Download the source code. For example,
```bash
$ git clone https://github.com/cuhk-eda/cu-gr
```

**Step 2:** Go to the project root and build by
```bash
$ cd cu-gr
$ scripts/build.py -o release
```

Note that this will generate two folders under the root, `build` and `run` (`build` contains intermediate files for build/compilation, while `run` contains binaries and auxiliary files).
More details are in [`scripts/build.py`](scripts/build.py).

### 1.1. Dependencies

* [GCC](https://gcc.gnu.org/) (version >= 5.5.0) or other working c++ compliers
* [CMake](https://cmake.org/) (version >= 2.8)
* [Boost](https://www.boost.org/) (version >= 1.58)
* [Python](https://www.python.org/) (version 3, optional, for utility scripts)
* [Innovus®](https://www.cadence.com/content/cadence-www/global/en_US/home/tools/digital-design-and-signoff/soc-implementation-and-floorplanning/innovus-implementation-system.html) (version 18.1, optional, for design rule checking and evaluation)
* [Rsyn](https://github.com/RsynTeam/rsyn-x) (a trimmed version is used, already added under folder `rsyn`)
* [Dr. CU](https://github.com/cuhk-eda/dr-cu) (v4.1.1, optional, official detailed router for ICCAD'19 Contest, [binary](http://iccad-contest.org/2019/Problem_C/drcu_june19.zip) is already included under the root)

## 2. How to Run

### 2.1. Toy Test

#### Run Binary Directly

Go to the `run` directory and run the binary `iccad19gr` with a toy case `ispd18_sample`:
```bash
$ cd run
$ ./iccad19gr -lef ../toys/iccad2019c/ispd18_sample/ispd18_sample.input.lef -def ../toys/iccad2019c/ispd18_sample/ispd18_sample.input.def -output ispd18_sample.solution.guide -threads 8
```

#### Run with a Wrapping Script

Instead of running the binary directly, you may also use a wrapping script `run.py` to save typing and do more:
```bash
$ cd run
$ ./run.py 8s -p ../toys/
```

If Innovus® has been properly installed in your OS, an evaluation can be launched by
```bash
$ ./run.py 8s -s eval -p ../toys/
```
In the end, a result table will be printed in the terminal.

Furthermore, the solution can be visualized by
```bash
$ ./run.py 8s -s view -p ../toys/
```
which gives:

![ispd18_sample.solution.png](/toys/iccad2019c/ispd18_sample/ispd18_sample.solution.png)

The three steps, `route`, `eval` and `view` of `run.py` can also be invoked in a single line:
```bash
$ ./run.py 8s -s route eval view -p ../toys/
```
More usage about `run.py` can be known by the option `-h`.

### 2.2. Batch Test

The benchmarks can be downloaded from [the hompage of ISPD'18 Contest ](http://www.ispd.cc/contests/18/#benchmarks).
You may let `run.py` know the benchmark path by setting OS environmental variable `BENCHMARK_PATH` or specifying it under option `-p`.
Then,
```bash
$ cd run
$ ./run.py <benchmark_name...|all> -s route eval [option...]
```

## 3. Modules

* `ispd18eval`: scripts and other files for evaluation, provided by [ICCAD'19 Contest](http://iccad-contest.org/2019/Problem_C/eval.zip)
* `ispd19eval`: scripts and other files for evaluation, provided by [ICCAD'19 Contest](http://iccad-contest.org/2019/Problem_C/eval.zip)
* `rsyn`: code from [Rsyn](https://github.com/RsynTeam/rsyn-x) for file IO
* `scripts`: utility python scripts
* `src`: C++ source code
    * `db`: database, including the global grid graph and the net information
    * `single_net`: routing a single net, including querying the global grid graph, building the local grid graph, running maze routing, and some post processing
    * `multi_net`: routing all nets with "rip-up and rereoute" and multithreading
    * `utils`: some utility code
* `toys`: toy test cases
* `drcu`: default detailed router for evaluation


## 4. Results

Experiments are performed on a 64-bit Linux workstation with Intel Xeon Silver 4114 CPU (2.20GHz, 40 cores) and 256GB memory.
Consistent with the contest, eight threads are used.

|   Design  | Wire Length  & Via | Non-Preferred  Usage |   Short  | Min-Area  & Spacing | DR Score | GR  Runtime (sec) |
|:---------:|:------------------:|:--------------------:|:--------:|:-------------------:|:--------:|:---------------:|
|  `ispd2018_test5`  |      15613663      |        166994        |  330425  |        288500       | 16089196 |        68       |
|  `ispd2018_test5_metal5` |      15807997      |        135293        |  261150  |        224000       | 16210303 |        85       |
|  `ispd2018_test8`  |      37441058      |        269993        |  209470  |        144000       | 37908815 |       236       |
|  `ispd2018_test8_metal5` |      36746610      |        336768        |  194510  |        129500       | 37293962 |       300       |
|  `ispd2018_test10` |      39061258      |        882371        |  669965  |        471000       | 40600501 |       334       |
| `ispd2018_test10_metal5` |      40246090      |        1413120       |  4021620 |        685500       | 46300610 |       373       |
|  `ispd2019_test7`  |      77286072      |        1428396       |  9680620 |       6883000       | 88577731 |       506       |
|  `ispd2019_test7_metal5` |      70848996      |        1535876       |  9943260 |       6686000       | 82169293 |       377       |
|  `ispd2019_test8`  |      119199593      |        1338449       |  7780220 |       6103000       | 128412302 |       365       |
|  `ispd2019_test8_metal5` |      116062781      |        1493314       |  8561400 |       6089000       | 126429212 |       588       |
|  `ispd2019_test9`  |      184246497      |        2181774       | 14765850 |       10847000      | 201270655 |       528       |
|  `ispd2019_test9_metal5` |      179242111      |        2323850       | 16020280 |       10948000      | 197937335 |       658       |

## 5. License

READ THIS LICENSE AGREEMENT CAREFULLY BEFORE USING THIS PRODUCT. BY USING THIS PRODUCT YOU INDICATE YOUR ACCEPTANCE OF THE TERMS OF THE FOLLOWING AGREEMENT. THESE TERMS APPLY TO YOU AND ANY SUBSEQUENT LICENSEE OF THIS PRODUCT.



License Agreement for CUGR



Copyright (c) 2020 by The Chinese University of Hong Kong



All rights reserved



CU-SD LICENSE (adapted from the original BSD license) Redistribution of the any code, with or without modification, are permitted provided that the conditions below are met.



Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.



Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.



Neither the name nor trademark of the copyright holder or the author may be used to endorse or promote products derived from this software without specific prior written permission.



Users are entirely responsible, to the exclusion of the author, for compliance with (a) regulations set by owners or administrators of employed equipment, (b) licensing terms of any other software, and (c) local, national, and international regulations regarding use, including those regarding import, export, and use of encryption software.



THIS FREE SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR ANY CONTRIBUTOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, EFFECTS OF UNAUTHORIZED OR MALICIOUS NETWORK ACCESS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


================================================
FILE: ispd18eval/README
================================================
Prerequisite
------------
Please make sure you have Innovus installed and the path to Innovus is added to your $PATH environment variable. To add a path to $PATH variable, add the following statement to your shell config file:

Assuming the path to Innovus is /path/to/innovus/bin

For bash/ksh, add the following line to .bashrc/.kshrc
export PATH=/path/to/innovus/bin:$PATH

For csh/tcsh, add the following line to .cshrc
setenv PATH /path/to/innovus/bin:$PATH

Usage
-----
./ispd18eval.sh -lef <path/to/input/LEF> -guide <path/to/input/guide> -def <path/to/solution/DEF>

Example
-------
./ispd18eval.sh -lef sample/ispd18_sample.input.lef -guide sample/ispd18_sample.input.guide -def sample/ispd18_sample.output.def

Required files
--------------
in benchmark directory (use benchmark "sample" as example):
ispd18_sample.input.lef - input LEF file
ispd18_sample.input.guide - input route guide file
ispd18_sample.output.def - output DEF file with routing solution

in evaluation directory:
ispd18eval.sh - evaluation script
ispd18eval - evaluation binary for score calculation
ispd18eval.w - weights for score calculation
ispd18eval.tcl - script for Innovus

Output files
------------
in the current directory (use benchmark "sample" as example):
score.rpt

Notes
-----
Please make sure:
1. You have write permission to the current directory.
2. You are able to start Innovus by just using "innovus" command on your terminal. Otherwise, you have to add the Innovus bin directory to your PATH variable.

Contacts
--------
ispd2018contest@gmail.com



================================================
FILE: ispd18eval/ispd18eval.sh
================================================
#!/bin/sh

if [ $# -eq 0 ] ; then
    echo "$0 -lef <input LEF> -guide <guide file> -def <routed DEF>"
    echo "example:"
    echo "$0 -lef sample/ispd18_sample.input.lef -guide sample/ispd18_sample.input.guide -def sample/ispd18_sample.output.def"
    exit
fi

INVS="innovus"
EVAL="./ispd18eval_bin"

command -v $INVS || {
    echo "$INVS is not available."
    exit 1
}

keepLogs=0

#read arguments
while [ $# -gt 0 ] ; do
    case $1 in
        -lef)   shift ; inputLef=$1 ;;
        -guide) shift ; inputRg=$1 ;;
        -def)   shift ; outputDef=$1 ;;
        -keep)  shift ; keepLogs=1 ;;
        *) echo "unknown : $1" ;;
    esac
    shift
done

evalGeoRpt='eval.geo.rpt'
evalConRpt='eval.con.rpt'
evalScoreRpt='eval.score.rpt'
evalTcl='eval.tcl'

if [ ! -f $inputLef ] ; then
    echo "ERROR: $inputLef not found"
    exit
elif [ ! -f $inputRg ] ; then
    echo "ERROR: $inputRg not found"
    exit
elif [ ! -f $outputDef ] ; then
    echo "ERROR: $outputDef not found"
    exit
fi

if [ -f $evalTcl ] ; then
    echo "WARNING: tcl file exists, overwriting..."
fi

echo "#evaluation script for ISPD 2018 contest" > $evalTcl
echo 'source ispd18eval.tcl' >> $evalTcl
echo "evaluate $inputLef $outputDef $evalGeoRpt $evalConRpt" >> $evalTcl
echo 'exit' >>$evalTcl

if [ "$keepLogs" = 0 ] ; then
    rm -f $evalGeoRpt
    rm -f $evalConRpt
fi

cmd="$INVS -init $evalTcl -log eval.log -overwrite -nowin"
echo $cmd
$cmd

if [ "$keepLogs" = 0 ] ; then
    rm $evalTcl
    rm 'eval.log'
    rm 'eval.logv'
    rm 'eval.cmd'
    rm `basename "$outputDef.v"`
fi

cmd="$EVAL -lef $inputLef -def $outputDef -guide $inputRg -georpt $evalGeoRpt -conrpt $evalConRpt"
echo $cmd
$cmd | tee $evalScoreRpt



================================================
FILE: ispd18eval/ispd18eval.tcl
================================================

proc evaluate { inputLef outputDef evalGeoRpt evalConRpt } {
    setMultiCpuUsage -localCpu 8
    loadDesign $inputLef $outputDef

    setVerifyGeometryMode -area { 0 0 0 0 }
    setVerifyGeometryMode -minWidth false
    setVerifyGeometryMode -minSpacing true
    setVerifyGeometryMode -minArea true
    setVerifyGeometryMode -sameNet true
    setVerifyGeometryMode -short true
    setVerifyGeometryMode -overlap false
    setVerifyGeometryMode -offRGrid false
    setVerifyGeometryMode -offMGrid false
    setVerifyGeometryMode -mergedMGridCheck false
    setVerifyGeometryMode -minHole false
    setVerifyGeometryMode -implantCheck false
    setVerifyGeometryMode -minimumCut false
    setVerifyGeometryMode -minStep false
    setVerifyGeometryMode -viaEnclosure false
    setVerifyGeometryMode -antenna false
    setVerifyGeometryMode -insuffMetalOverlap false
    setVerifyGeometryMode -pinInBlkg false
    setVerifyGeometryMode -diffCellViol false
    setVerifyGeometryMode -sameCellViol false
    setVerifyGeometryMode -padFillerCellsOverlap false
    setVerifyGeometryMode -routingBlkgPinOverlap false
    setVerifyGeometryMode -routingCellBlkgOverlap false
    setVerifyGeometryMode -regRoutingOnly false
    setVerifyGeometryMode -stackedViasOnRegNet false
    setVerifyGeometryMode -wireExt false
    setVerifyGeometryMode -useNonDefaultSpacing false
    setVerifyGeometryMode -maxWidth false
    setVerifyGeometryMode -maxNonPrefLength -1
    setVerifyGeometryMode -error 10000000
    catch { verifyGeometry -report $evalGeoRpt }

    catch { verifyConnectivity -noFloatingMetal -error 10000000 -report $evalConRpt }
    #catch { verifyConnectivity -type all -noAntenna -noUnConnPin -geomConnect -noSoftPGConnect -noFloatingMetal -error 10000000 -report $evalConRpt }

    exit
}

proc loadDesign { lef def } {
    catch { loadLefFile $lef }
    catch { loadDefFile $def }
}



================================================
FILE: ispd18eval/ispd18eval.w
================================================
Wire            0.5
Via             2.0
OutOfGuideWire  1.0
OutOfGuideVia   1.0
OffTrackWire    0.5
OffTrackVia     1.0
WrongWayWire    1.0
Short           500.0
Area            500.0
Spacing         500.0
Open            0.0


================================================
FILE: ispd19eval/README
================================================
Prerequisite
------------
Please make sure you have Innovus installed and the path to Innovus is added to your $PATH environment variable. To add a path to $PATH variable, add the following statement to your shell config file:

Assuming the path to Innovus is /path/to/innovus/bin

For bash/ksh, add the following line to .bashrc/.kshrc
export PATH=/path/to/innovus/bin:$PATH

For csh/tcsh, add the following line to .cshrc
setenv PATH /path/to/innovus/bin:$PATH

Usage
-----
./ispd19eval.sh -lef <path/to/input/LEF> -guide <path/to/input/guide> -idef <path/to/input/DEF> -odef <path/to/solution/DEF>

Example
-------
./ispd19eval.sh -lef sample/ispd19_sample.input.lef -guide sample/ispd19_sample.input.guide -idef sample/ispd19_sample.input.def -odef sample/ispd19_sample.output.def

Required files
--------------
in benchmark directory (use benchmark "sample" as example):
ispd19_sample.input.lef - input LEF file
ispd19_sample.input.def - input DEF file
ispd19_sample.input.guide - input route guide file
ispd19_sample.output.def - output DEF file with routing solution

in evaluation directory:
ispd19eval.sh - evaluation script
ispd19eval - evaluation binary for score calculation
ispd19eval.w - weights for score calculation
ispd19eval.tcl - script for Innovus

Output files
------------
in the current directory (use benchmark "sample" as example):
score.rpt

Notes
-----
Please make sure:
1. You have write permission to the current directory.
2. You are able to start Innovus by just using "innovus" command on your terminal. Otherwise, you have to add the Innovus bin directory to your PATH variable.

Contacts
--------
ispd2019contest@gmail.com



================================================
FILE: ispd19eval/ispd19eval.sh
================================================
#!/bin/sh

if [ $# -eq 0 ] ; then
    echo "$0 -lef <input LEF> -guide <guide file> -idef <input DEF> -odef <routed DEF>"
    echo "example:"
    echo "$0 -lef sample/ispd19_sample.input.lef -guide sample/ispd19_sample.input.guide -idef sample/ispd19_sample.input.def -odef sample/ispd19_sample.output.def"
    exit
fi

INVS="innovus"
EVAL="./ispd19eval_bin"

command -v $INVS || {
    echo "$INVS is not available."
    exit 1
}

method='a'
keepLogs=0
prefix=
trimmedDef='eval.def'
combinedDef='comb.def'

#read arguments
while [ $# -gt 0 ] ; do
    case $1 in
        -lef)   shift ; inputLef=$1 ;;
        -guide) shift ; inputRg=$1 ;;
        -idef)  shift ; inputDef=$1 ;;
        -odef)  shift ; outputDef=$1 ;;
        -tdef)  shift ; trimmedDef=$1 ;;
        -cdef)  shift ; combinedDef=$1 ;;
        -prefix) shift ; prefix=$1 ;;
        -method) shift ; method=$1 ;;
        -keep) keepLogs=1 ;;
        *) echo "unknown : $1" ;;
    esac
    shift
done

evalGeoRpt="${prefix}eval.geo.rpt"
evalConRpt="${prefix}eval.con.rpt"
evalScoreRpt="${prefix}eval.score.rpt"
evalTcl="${prefix}eval.tcl"
invsLog="${prefix}eval"

if [ ! -f $inputLef ] ; then
    echo "ERROR: $inputLef not found"
    exit
elif [ ! -f $inputRg ] ; then
    echo "ERROR: $inputRg not found"
    exit
elif [ ! -f $inputDef ] ; then
    echo "ERROR: $inputDef not found"
    exit
elif [ ! -f $outputDef ] ; then
    echo "ERROR: $outputDef not found"
    exit
fi

if [ -f $evalTcl ] ; then
    echo "WARNING: tcl file exists, overwriting..."
fi

if [ "$method" = 'a' ] ; then
    dbuMicron=`grep "UNITS DISTANCE MICRONS" $inputDef | cut -d' ' -f 4`
    echo 'VERSION 5.8 ;' > $trimmedDef
    echo 'DIVIDERCHAR "/" ;' >> $trimmedDef
    echo 'BUSBITCHARS "[]" ;' >> $trimmedDef
    echo "UNITS DISTANCE MICRONS $dbuMicron ;" >> $trimmedDef
    sed -n '/^[[:blank:]]*NETS[[:blank:]]*[1-9][0-9]*[[:blank:]]*;[[:blank:]]*$/,/^[[:blank:]]*END NETS[[:blank:]]*$/p' $outputDef >> $trimmedDef
elif [ "$method" = 'b' ] ; then
    sed -n '/^[[:blank:]]*VERSION[[:blank:]]*[0-9]\.[0-9][[:blank:]]*;[[:blank:]]*$/,/^END SPECIALNETS[[:blank:]]*$/p' $inputDef > $combinedDef
    sed -n '/^[[:blank:]]*NETS[[:blank:]]*[1-9][0-9]*[[:blank:]]*;[[:blank:]]*$/,/^[[:blank:]]*END NETS[[:blank:]]*$/p' $outputDef >> $combinedDef
    echo "END DESIGN" >> $combinedDef

else
    echo "ERROR: unknown evaluation method $method"
    exit
fi

echo "#evaluation script for ISPD 2019 contest" > $evalTcl
echo 'source ispd19eval.tcl' >> $evalTcl
if [ "$method" = 'a' ] ; then
    echo "evaluate $inputLef $inputDef $trimmedDef $evalGeoRpt $evalConRpt" >> $evalTcl
else
    echo "evaluate $inputLef $combinedDef {} $evalGeoRpt $evalConRpt" >> $evalTcl
fi

echo 'exit' >>$evalTcl

if [ "$keepLogs" = 0 ] ; then
    rm -f $evalGeoRpt
    rm -f $evalConRpt
fi

cmd="$INVS -init $evalTcl -log $invsLog.log -overwrite -nowin"
echo $cmd
$cmd

if [ "$keepLogs" = 0 ] ; then
    rm -f $evalTcl
    rm -f "$invsLog.log"
    rm -f "$invsLog.logv"
    rm -f "$invsLog.cmd"
    rm -f `basename "$outputDef.v"`
fi

cmd="$EVAL -lef $inputLef -def $outputDef -guide $inputRg -georpt $evalGeoRpt -conrpt $evalConRpt"
echo $cmd
$cmd | tee $evalScoreRpt



================================================
FILE: ispd19eval/ispd19eval.tcl
================================================
setMultiCpuUsage -localCpu 8
proc evaluate { inputLef inputDef outputDef evalGeoRpt evalConRpt } {

    loadDesign $inputLef $inputDef $outputDef
    
    set_verify_drc_mode -disable_rules {}
    set_verify_drc_mode -check_implant true
    set_verify_drc_mode -check_implant_across_rows false
    set_verify_drc_mode -check_ndr_spacing false
    set_verify_drc_mode -check_only default
    set_verify_drc_mode -check_same_via_cell false
    set_verify_drc_mode -exclude_pg_net false
    set_verify_drc_mode -ignore_trial_route false
    set_verify_drc_mode -report $evalGeoRpt
    set_verify_drc_mode -limit 10000000
    catch { verify_drc }

#   catch { verifyConnectivity -noFloatingMetal -error 10000000 -report $evalConRpt }
    catch { verifyConnectivity -type all -noAntenna -noUnConnPin -geomConnect -noSoftPGConnect -noFloatingMetal -error 10000000 -report $evalConRpt }

    exit
}

proc loadDesign { lef idef odef } {
    catch { loadLefFile $lef }
    catch { loadDefFile $idef }
    if { $odef != "" } {
        catch { defIn $odef }
    }
}



================================================
FILE: ispd19eval/ispd19eval.w
================================================
Wire            0.5
SingleCutVia    4.0
MultiCutVia     2.0
OutOfGuideWire  1.0
OutOfGuideVia   1.0
OffTrackWire    0.5
OffTrackVia     1.0
WrongWayWire    1.0
Short           500.0
ShortArea       500.0
ParallelRun     500.0
EndOfLine       500.0
CutSpacing      500.0
AdjCutSpacing   500.0
CornerSpacing   500.0
MinArea         500.0
Open            0.0



================================================
FILE: ispd19eval/ispd19eval_bin
================================================
[File too large to display: 10.4 MB]

================================================
FILE: rsyn/.gitrepo
================================================
; DO NOT EDIT (unless you know what you are doing)
;
; This subdirectory is a git "subrepo", and this file is maintained by the
; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme
;
[subrepo]
	remote = https://github.com/rsyn/rsyn.git
	branch = master
	commit = 99dc1241ef523c416be2617c7c7bdd3eec15413f
	parent = 09d1bb30dc611121087a3ce33968e806944d33bb
	cmdver = 0.3.1


================================================
FILE: rsyn/LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS


================================================
FILE: rsyn/README.md
================================================

#### This is a subrepository. Please go to the [rsyn-x](https://github.com/rsyn/rsyn-x) for the main repository.


================================================
FILE: rsyn/include/def5.8/defiAlias.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013 - 2014, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiALIAS_h
#define defiALIAS_h

#include "defiKRDefs.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE

class defAliasIterator;
class defrData;

class defiAlias_itr {
public:
  defiAlias_itr(defrData *defData = 0);
  void Init();

  void Destroy();
  ~defiAlias_itr();

  int Next();
  const char* Key();
  const char* Data();
  int Marked();

protected:
  defAliasIterator   *iterator;
  int first;
  defrData *defData;
};

END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiAssertion.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiAssertion_h
#define defiAssertion_h

#include "defiKRDefs.hpp"
#include <stdio.h>

BEGIN_LEFDEF_PARSER_NAMESPACE

// Struct holds the data for one assertion/constraint.
// An assertion or constraint is either a net/path rule or a
// wired logic rule.
//
//  A net/path rule is an item or list of items plus specifications.
//    The specifications are: rise/fall min/max.
//    The items are a list of (one or more) net names or paths or a
//    combination of both.
//
//  A wired logic rule is a netname and a distance.
//
//  We will NOT allow the mixing of wired logic rules and net/path delays
//  in the same assertion/constraint.
//
//  We will allow the rule to be a sum of sums (which will be interpreted
//  as just one list).
//
class defrData;

class defiAssertion {
public:
  defiAssertion(defrData *data);
  void Init();

  void Destroy();
  ~defiAssertion();

  void setConstraintMode();
  void setAssertionMode();
  void setSum();
  void setDiff();
  void setNetName(const char* name);
  void setRiseMin(double num);
  void setRiseMax(double num);
  void setFallMin(double num);
  void setFallMax(double num);
  void setDelay();
  void setWiredlogicMode();
  void setWiredlogic(const char* net, double dist);
  void addNet(const char* name);
  void addPath(const char* fromInst, const char* fromPin,
               const char* toInst, const char* toPin);
  void bumpItems();
  void unsetSum();

  int isAssertion() const;  // Either isAssertion or isConstraint is true
  int isConstraint() const;
  int isWiredlogic() const; // Either isWiredlogic or isDelay is true
  int isDelay() const;
  int isSum() const;
  int isDiff() const;
  int hasRiseMin() const;
  int hasRiseMax() const;
  int hasFallMin() const;
  int hasFallMax() const;
  double riseMin() const;
  double riseMax() const;
  double fallMin() const;
  double fallMax() const;
  const char* netName() const; // Wired logic net name
  double distance() const; // Wired logic distance
  int numItems() const;  // number of paths or nets 
  int isPath(int index) const;   // is item #index a path?
  int isNet(int index) const;    // is item #index a net?
  void path(int index, char** fromInst, char** fromPin,
	   char** toInst, char** toPin) const; // Get path data for item #index
  void net(int index, char** netName) const;   // Get net data for item #index

  void clear();
  void print(FILE* f) const;


protected:
  char isAssertion_;
  char isSum_;
  char isDiff_;
  char hasRiseMin_;
  char hasRiseMax_;
  char hasFallMin_;
  char hasFallMax_;
  char isWiredlogic_;
  char isDelay_;
  char* netName_;     // wired logic net name
  int netNameLength_;
  double riseMin_;
  double riseMax_;
  double fallMin_;
  double fallMax_;    // also used to store the wired logic dist
  int numItems_;
  int numItemsAllocated_;
  char* itemTypes_;
  int** items_;       // not really integers.

  defrData *defData;
};

END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiBlockage.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiBLOCKAGES_h
#define defiBLOCKAGES_h

#include <stdio.h>
#include "defiKRDefs.hpp"
#include "defiMisc.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE
class defrData;

class defiBlockage {
public:
  defiBlockage(defrData *data);
  void Init();

  void Destroy();
  ~defiBlockage();

  void clear();
  void clearPoly();

  void setLayer(const char* name);
  void setPlacement();
  void setComponent(const char* name);
  void setSlots();
  void setFills();
  void setPushdown();
  void setExceptpgnet();                            // 5.7
  void setSoft();                                   // 5.7
  void setPartial(double maxDensity);               // 5.7
  void setSpacing(int minSpacing);
  void setDesignRuleWidth(int width);
  void setMask(int maskColor);                      // 5.8
  void addRect(int xl, int yl, int xh, int yh);
  void addPolygon(defiGeometries* geom);

  int hasLayer() const;
  int hasPlacement() const;
  int hasComponent() const;
  int hasSlots() const;
  int hasFills() const;
  int hasPushdown() const;
  int hasExceptpgnet() const;                       // 5.7
  int hasSoft() const;                              // 5.7
  int hasPartial() const;                           // 5.7
  int hasSpacing() const;                           // 5.6
  int hasDesignRuleWidth() const;                   // 5.6
  int hasMask() const;                              // 5.8
  int mask() const;                            // 5.8
  int minSpacing() const;                           // 5.6
  int designRuleWidth() const;                      // 5.6
  double placementMaxDensity() const;               // 5.7
  const char* layerName() const;
  const char* layerComponentName() const;
  const char* placementComponentName() const;

  int numRectangles() const;
  int xl(int index) const;
  int yl(int index) const;
  int xh(int index) const;
  int yh(int index) const;

  int numPolygons() const;                          // 5.6
  struct defiPoints getPolygon(int index) const;    // 5.6

  void print(FILE* f) const;

protected:
  int    hasLayer_;
  char*  layerName_;
  int    layerNameLength_;
  int    hasPlacement_;
  int    hasComponent_;
  char*  componentName_;
  int    componentNameLength_;
  int    hasSlots_;
  int    hasFills_;
  int    hasPushdown_;                   // 5.7
  int    hasExceptpgnet_ ;               // 5.7
  int    hasSoft_;                       // 5.7
  double maxDensity_;                    // 5.7
  int    minSpacing_;
  int    width_;
  int    numRectangles_;
  int    rectsAllocated_;
  int    mask_;                          // 5.8
  int*   xl_;
  int*   yl_;
  int*   xh_;
  int*   yh_;
  int    numPolys_;                      // 5.6
  int    polysAllocated_;                // 5.6
  struct defiPoints** polygons_;         // 5.6

  defrData *defData;
};


END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiComponent.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiComponent_h
#define defiComponent_h

#include <stdio.h>
#include "defiKRDefs.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE

class defrData;

// Placement status for the component.
// Default is 0
#define DEFI_COMPONENT_UNPLACED 1
#define DEFI_COMPONENT_PLACED 2
#define DEFI_COMPONENT_FIXED 3
#define DEFI_COMPONENT_COVER 4


// Struct holds the data for componentMaskShiftLayers.
class defiComponentMaskShiftLayer {
public:
                defiComponentMaskShiftLayer(defrData *data);
                ~defiComponentMaskShiftLayer();

    void         Init();
    void         Destroy();
    void         addMaskShiftLayer(const char* layer);
    int          numMaskShiftLayers() const;
    void         bumpLayers(int size);
    void         clear();
    const  char* maskShiftLayer(int index) const;

protected:
    int          layersAllocated_;  // allocated size of layers_
    int          numLayers_;        // number of places used in layers_
    char**       layers_;

    defrData    *defData;
};


// Struct holds the data for one component.
class defiComponent {
public:
  defiComponent(defrData *defData);
  void Init();

  void Destroy();
  ~defiComponent();

  void IdAndName(const char* id, const char* name);
  void setGenerate(const char* genName, const char* macroName);
  void setPlacementStatus(int n);
  void setPlacementLocation(int x, int y, int orient);
  void setRegionName(const char* name);
  void setRegionBounds(int xl, int yl, int xh, int yh);
  void setEEQ(const char* name);
  void addNet(const char* netName);
  void addProperty(const char* name, const char* value, const char type);
  void addNumProperty(const char* name, const double d,
                      const char* value, const char type);
  void reverseNetOrder();
  void setWeight(int w);
  void setMaskShift(const char* color);
  void setSource(const char* name);
  void setForeignName(const char* name);
  void setFori(const char* name);
  void setForeignLocation(int x, int y, int orient);
  void setHalo(int left, int bottom, int right, int top);   // 5.6
  void setHaloSoft();                                       // 5.7
  void setRouteHalo(int haloDist, const char* minLayer, const char* maxLayer);
                                                            // 5.7
  void clear();

  // For OA to modify the Id & Name
  void changeIdAndName(const char* id, const char* name);

  const char* id() const;
  const char* name() const;
  int placementStatus() const;
  int isUnplaced() const;
  int isPlaced() const;
  int isFixed() const;
  int isCover() const;
  int placementX() const;
  int placementY() const;
  int placementOrient() const;
  const char* placementOrientStr() const;
  int hasRegionName() const;
  int hasRegionBounds() const;
  int hasEEQ() const;
  int hasGenerate() const;
  int hasSource() const;
  int hasWeight() const;
  int weight() const;
  int maskShiftSize() const;
  int maskShift(int index) const;
  int hasNets() const;
  int numNets() const;
  const char* net(int index) const;
  const char* regionName() const;
  const char* source() const;
  const char* EEQ() const;
  const char* generateName() const;
  const char* macroName() const;
  int hasHalo() const;                     // 5.6
  int hasHaloSoft() const;                 // 5.7
  void haloEdges(int* left, int* bottom, int* right, int* top);  // 5.6 
  int hasRouteHalo() const;                // 5.7
  int haloDist() const;                    // 5.7
  const char* minLayer() const;            // 5.7
  const char* maxLayer() const;            // 5.7

  // Returns arrays for the ll and ur of the rectangles in the region.
  // The number of items in the arrays is given in size.
  void regionBounds(int*size, int** xl, int** yl, int** xh, int** yh) const;

  int hasForeignName() const;
  const char* foreignName() const;
  int foreignX() const;
  int foreignY() const;
  const char* foreignOri() const; // return the string value of the orient
  int foreignOrient() const;      // return the enum value of the orient
  int hasFori() const;

  int    numProps() const;
  char*  propName(int index) const;
  char*  propValue(int index) const;
  double propNumber(int index) const;
  char   propType(int index) const;
  int    propIsNumber(int index) const;
  int    propIsString(int index) const;


  // Debug printing
  void print(FILE* fout) const;

  void bumpId(int size);
  void bumpName(int size);
  void bumpRegionName(int size);
  void bumpEEQ(int size);
  void bumpNets(int size);
  void bumpForeignName(int size);
  void bumpMinLayer(int size);
  void bumpMaxLayer(int size);
  void bumpFori(int size);

protected:
  char* id_;            // instance id
  char* name_;          // name.
  int nameSize_;        // allocated size of name.
  int idSize_;          // allocated size of id.
  int ForiSize_;        // allocate size of foreign ori
  int status_;          // placement status
  char hasRegionName_;  // the file supplied a region name for this comp
  char hasEEQ_;         // the file supplied an eeq
  char hasGenerate_;    // the file supplied an generate name and macro name
  char hasWeight_;      // the file supplied a weight
  char hasFori_;        // the file supplied a foreign orig name
  int orient_;          // orientation
  int x_, y_;           // placement loc

  int numRects_;
  int rectsAllocated_;
  int* rectXl_;       // region points
  int* rectYl_;
  int* rectXh_;
  int* rectYh_;

  char* regionName_;    // name.
  int regionNameSize_;  // allocated size of region name

  char* EEQ_;
  int EEQSize_;         // allocated size of eeq

  int numNets_;         // number of net connections
  int netsAllocated_;   // allocated size of nets array
  char** nets_;         // net connections

  int weight_;
  int* maskShift_; 
  int maskShiftSize_;
  char* source_;
  char hasForeignName_; // the file supplied a foreign name
  char* foreignName_;   // name
  int foreignNameSize_; // allocate size of foreign name
  int Fx_, Fy_;         // foreign loc
  int Fori_;            // foreign ori
  int generateNameSize_;
  char* generateName_;
  int macroNameSize_;
  char* macroName_;

  int hasHalo_;
  int hasHaloSoft_;           // 5.7
  int leftHalo_;
  int bottomHalo_;
  int rightHalo_;
  int topHalo_;
  int haloDist_;              // 5.7
  int minLayerSize_;          // 5.7
  char* minLayer_;            // 5.7
  int maxLayerSize_;          // 5.7
  char* maxLayer_;            // 5.7

  int numProps_;
  int propsAllocated_;
  char**  names_;
  char**  values_;
  double* dvalues_;
  char*   types_;

  defrData *defData;
};

END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiDebug.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiDebug_h
#define defiDebug_h 

#include "defiKRDefs.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE

class defrData;

/* Set flag */
extern void defiSetDebug (int num, int value) ;

/* Read flag */
extern int defiDebug (int num) ;

/* Error loggin function */
extern void defiError(int check, int msgNum, const char* message, defrData *defData = NULL);

/* for auto upshifting names in case insensitive files */
extern const char* upperCase(const char* c, defrData *defData = NULL);
extern const char* DEFCASE(const char* ch, defrData *defData = NULL);

END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiDefs.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

/* Definitions header file for the DEF Interface */

#ifndef DEFI_DEFS_H
#define DEFI_DEFS_H

#include <stdio.h>
#include <limits.h>

#include "defiKRDefs.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE

/*=================== General Types and Definitions =================*/

#ifndef TRUE
#define TRUE (1)
#endif

#ifndef FALSE
#define FALSE (0)
#endif

#ifndef NULL
#define NULL (0)
#endif

typedef struct defpoint defPOINT;

struct defpoint {
    int x;
    int y;
    };

typedef struct defrect defRECT;

struct defrect {
    defPOINT ll,ur;
    };

typedef struct deftoken defTOKEN;

struct deftoken {
    defTOKEN *next;
    int what;
    int data;
    defPOINT pt;
    };

#define START_LIST 10001
#define POINT_SPEC 10002
#define VIA_SPEC   10003
#define WIDTH_SPEC 10004
#define LAYER_SPEC 10005
#define SHAPE_SPEC 10006

#ifndef	MIN
#define MIN(x,y) ((x) < (y)? (x) : (y))
#endif

#ifndef	MIN
#define MAX(x,y) ((x) > (y)? (x) : (y))
#endif

#define ROUND(x) ((x) >= 0 ? (int)((x)+0.5) : (int)((x)-0.5))

//defTOKEN *TokenFromRect();

/*=================== Enumerated Types ============================*/
typedef int defiBoolean;

/* Every type of object has a unique identifier, and each object
 * which is created knows its type, by storing the defiObjectType_e
 * as the first member in the structure.
 *
 */
typedef enum
{
  /* decrease likelihood of accidentally correct values by starting
     at an unusual number */
  defiInvalidObject = 41713, 
  defiUnknownObject /* void * */
} defiObjectType_e;


/* The memory policy controls how an object which refers to or is composed of
 * other objects manages those sub-objects, particularly when the parent
 * object is copied or deleted.  The policy is specified as an argument to the
 * constructor or initializer, and it is stored with the parent object.
 *
 * The memory policy is a generalization of the common distinction between
 * deep and shallow copies.  When a shallow copy of a parent object is made,
 * the copy maintains pointers to the original sub-objects, and the original
 * parent remains responsible for deleting those sub-objects.  When a deep
 * copy of a parent object is made, the copy maintains pointers to new copies
 * of each of the sub-objects, and the copy is responsible for deleting the
 * new sub-objects.
 *
 * The defiPrivateSubObjects policy corresponds to a deep copy, while the the
 * defiReferencedSubObjects policy corresponds to a shallow copy.  Usually an
 * initial parent object will be created using defiPrivateSubObjects.  When a
 * copy is made of that parent object, the copy may either maintain its own
 * private versions of each sub-object, or it may refer to the original
 * sub-objects.
 *
 * In certain cases, it is useful to create a deep copy of a parent object,
 * even though the new parent object shouldn't be responsible for the new
 * sub-objects.  In this case, the defiOrphanSubObjects and
 * defiAdoptedSubObjects policies may be used.  defiOrphanSubObjects is
 * specified while creating the deep copy, and then defiAdoptedSubObjects is
 * specified while creating another parent which will take on the
 * responsibility for the orphans.
 *
 * An object's memory policy affects only the sub-objects which it directly
 * controls.  Those sub-objects themselves may have the same memory policy as
 * their parents, or they may have a different memory policy.  When a copy is
 * made of a child sub-object, the memory policy of the child controls
 * whether deep or shallow copies are made of the grandchildren.
 */
typedef enum
{
  /* decrease likelihood of accidentally correct values by starting
     at an unusual number */
  defiInvalidMemoryPolicy = 23950,
  defiPrivateSubObjects,      // deep copy + delete
  defiReferencedSubObjects,   // shallow copy, no delete
  defiOrphanSubObjects,       // deep copy, no delete
  defiAdoptedSubObjects       // shallow copy + delete
} defiMemoryPolicy_e;

/* An opaque pointer for passing user data through from one API
 * function to another.
 * A handle which a user can set to point to their own data
 * on a per-callback basis.  (See the comment in defwWriter.h)
 */
#define defiUserData void *
#define defiUserDataHandle void **

/* On SunOs 4.1.3 with acc, this is in libansi.a, but isn't properly
 * declared anywhere in the header files supplied with the compiler.
 */
#ifdef __SunOS_4_1_3
extern int strcasecmp(const char*, const char*);
#endif

#ifdef WIN32
#define strdup _strdup
#endif 

END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiFPC.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiFPC_h
#define defiFPC_h

#include <stdio.h>
#include "defiKRDefs.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE

class defrData;

class defiFPC {
public:
  defiFPC(defrData *data);
  void Init();

  void Destroy();
  ~defiFPC();

  void clear();

  void setName(const char* name, const char* direction);
  void setAlign();
  void setMax(double num);
  void setMin(double num);
  void setEqual(double num);
  void setDoingBottomLeft();
  void setDoingTopRight();
  void addRow(const char* name);
  void addComps(const char* name);
  void addItem(char typ, const char* name);

  const char* name() const;
  int isVertical() const;
  int isHorizontal() const;
  int hasAlign() const;
  int hasMax() const;
  int hasMin() const;
  int hasEqual() const;
  double alignMax() const;
  double alignMin() const;
  double equal() const;

  int numParts() const;

  // Return the constraint number "index" where index is
  //    from 0 to numParts()
  // The returned corner is 'B' for bottom left  'T' for topright
  // The returned typ is 'R' for rows   'C' for comps
  // The returned char* points to name of the item.
  void getPart(int index, int* corner, int* typ, char** name) const;

  // debug print
  void print(FILE* f) const;

protected:
  char* name_;
  int nameLength_;
  char direction_; // H or V
  char hasAlign_;
  char hasMin_;
  char hasMax_;
  char hasEqual_;
  char corner_;   // Bottomleft or Topright
  double minMaxEqual_;
  int namesAllocated_;  // allocated size of names_ and rowOrComp_
  int namesUsed_;       // number of entries used in the arrays
  char* rowOrComp_;
  char** names_;

  defrData *defData;
};


END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiFill.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiFILL_h
#define defiFILL_h

#include <stdio.h>
#include "defiKRDefs.hpp"
#include "defiMisc.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE

class defrData;

class defiFill {
public:
  defiFill(defrData *data);
  void Init();

  void Destroy();
  ~defiFill();

  void clear();
  void clearPoly();
  void clearPts();

  void setLayer(const char* name);
  void setLayerOpc();                             // 5.7
  void addRect(int xl, int yl, int xh, int yh);
  void addPolygon(defiGeometries* geom);
  void setVia(const char* name);                  // 5.7
  void setViaOpc();                               // 5.7
  void addPts(defiGeometries* geom);              // 5.7

  int hasLayer() const;
  const char* layerName() const;
  int hasLayerOpc() const;                        // 5.7

  void setMask(int colorMask);			  // 5.8
  int layerMask() const;                          // 5.8
  int viaTopMask() const;			  // 5.8
  int viaCutMask() const;			  // 5.8
  int viaBottomMask() const;                      // 5.8

  int numRectangles() const;
  int xl(int index) const;
  int yl(int index) const;
  int xh(int index) const;
  int yh(int index) const;

  int numPolygons() const;                        // 5.6
  struct defiPoints getPolygon(int index) const;  // 5.6

  int hasVia() const;                             // 5.7
  const char* viaName() const;                    // 5.7
  int hasViaOpc() const;                          // 5.7

  int numViaPts() const;                          // 5.7
  struct defiPoints getViaPts(int index) const;   // 5.7

  void print(FILE* f) const;

protected:
  int   hasLayer_;
  char* layerName_;
  int   layerNameLength_;
  int   layerOpc_;                  // 5.7
  int   numRectangles_;
  int   rectsAllocated_;
  int*  xl_;
  int*  yl_;
  int*  xh_;
  int*  yh_;
  int   numPolys_;                  // 5.6
  int   polysAllocated_;            // 5.6
  struct defiPoints** polygons_;    // 5.6
  int   hasVia_;                    // 5.7
  char* viaName_;                   // 5.7
  int   viaNameLength_;             // 5.7
  int   viaOpc_;                    // 5.7
  int   numPts_;                    // 5.7
  int   ptsAllocated_;              // 5.7
  int   mask_;                      // 5.8
  struct defiPoints** viaPts_;      // 5.7

  defrData *defData;
};


END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiGroup.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiGroup_h
#define defiGroup_h

#include <stdio.h>
#include "defiKRDefs.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE

class defrData;

// Struct holds the data for one property.

class defiGroup {
public:
  defiGroup(defrData *data);
  void Init();

  void Destroy();
  ~defiGroup();

  void clear();

  void setup(const char* name);
  void addProperty(const char* name, const char* value, const char type);
  void addNumProperty(const char* name, const double d,
                      const char* value, const char type);
  void addRegionRect(int xl, int yl, int xh, int yh);
  void setRegionName(const char* name);
  void setMaxX(int x);
  void setMaxY(int y);
  void setPerim(int p);

  const char* name() const;
  const char* regionName() const;
  int hasRegionBox() const;
  int hasRegionName() const;
  int hasMaxX() const;
  int hasMaxY() const;
  int hasPerim() const;
  void regionRects(int* size, int** xl, int**yl, int** xh, int** yh) const;
  int maxX() const;
  int maxY() const;
  int perim() const;

  int numProps() const;
  const char*  propName(int index) const;
  const char*  propValue(int index) const;
  double propNumber(int index) const;
  const char   propType(int index) const;
  int    propIsNumber(int index) const;
  int    propIsString(int index) const;

  // debug print
  void print(FILE* f) const;

protected:
  char* name_;
  int nameLength_;
  char* region_;
  int regionLength_;

  int rectsAllocated_;
  int numRects_;
  int* xl_;
  int* yl_;
  int* xh_;
  int* yh_;

  int maxX_;
  int maxY_;
  int perim_;
  char hasRegionBox_;
  char hasRegionName_;
  char hasPerim_;
  char hasMaxX_;
  char hasMaxY_;

  int numProps_;
  int propsAllocated_;
  char**  propNames_;
  char**  propValues_;
  double* propDValues_;
  char*   propTypes_;

  defrData *defData;
};


END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiIOTiming.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiIOTiming_h
#define defiIOTiming_h

#include <stdio.h>
#include "defiKRDefs.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE

class defrData;

class defiIOTiming {
public:
  defiIOTiming(defrData *data);
  void Init();

  void Destroy();
  ~defiIOTiming();

  void clear();

  void setName(const char* inst, const char* pin);
  void setVariable(const char* riseFall, double min, double max);
  void setSlewRate(const char* riseFall, double min, double max);
  void setCapacitance(double num);
  void setDriveCell(const char* name);
  void setFrom(const char* name);
  void setTo(const char* name);
  void setParallel(double num);


  int hasVariableRise() const;
  int hasVariableFall() const;
  int hasSlewRise() const;
  int hasSlewFall() const;
  int hasCapacitance() const;
  int hasDriveCell() const;
  int hasFrom() const;
  int hasTo() const;
  int hasParallel() const;

  const char* inst() const;
  const char* pin() const;
  double variableFallMin() const;
  double variableRiseMin() const;
  double variableFallMax() const;
  double variableRiseMax() const;
  double slewFallMin() const;
  double slewRiseMin() const;
  double slewFallMax() const;
  double slewRiseMax() const;
  double capacitance() const;
  const char* driveCell() const;
  const char* from() const;
  const char* to() const;
  double parallel() const;

  // debug print
  void print(FILE* f) const;

protected:
  char* inst_;
  int instLength_;
  char* pin_;
  int pinLength_;
  char* from_;
  int fromLength_;
  char* to_;
  int toLength_;
  char* driveCell_;
  char driveCellLength_;
  char hasVariableRise_;
  char hasVariableFall_;
  char hasSlewRise_;
  char hasSlewFall_;
  char hasCapacitance_;
  char hasDriveCell_;
  char hasFrom_;
  char hasTo_;
  char hasParallel_;
  double variableFallMin_;
  double variableRiseMin_;
  double variableFallMax_;
  double variableRiseMax_;
  double slewFallMin_;
  double slewRiseMin_;
  double slewFallMax_;
  double slewRiseMax_;
  double capacitance_;
  double parallel_;

  defrData *defData;
};


END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiKRDefs.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiKRDEFS_h
#define defiKRDEFS_h

#define BEGIN_LEFDEF_PARSER_NAMESPACE namespace LefDefParser {
#define END_LEFDEF_PARSER_NAMESPACE }
#define USE_LEFDEF_PARSER_NAMESPACE using namespace LefDefParser;

#endif /* defiKRDEFS_h */


================================================
FILE: rsyn/include/def5.8/defiMisc.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiMisc_h
#define defiMisc_h

#include <stdio.h>
#include "defiKRDefs.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE

class defrData;

struct defiPoints {
  int numPoints;
  int* x;
  int* y;
};

class defiGeometries {
public:
  defiGeometries(defrData *data);
  void Init();
  void Reset();

  void Destroy();
  ~defiGeometries();

  void startList(int x, int y);
  void addToList(int x, int y);

  int  numPoints() const;
  void points(int index, int* x, int* y) const;

protected:
  int numPoints_;
  int pointsAllocated_;
  int* x_;
  int* y_;

  defrData *defData;
};

class defiStyles {
public:
  defiStyles();
  void Init();

  void Destroy();
  ~defiStyles();

  void clear();

  void setStyle(int styleNum);
  void setPolygon(defiGeometries* geom);

  int style() const;
  struct defiPoints getPolygon() const;

  protected:
    int    styleNum_;
    struct defiPoints* polygon_;
    int    numPointAlloc_;
};

END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiNet.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013 - 2017, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: icftcm $
//  $Revision: #2 $
//  $Date: 2017/06/19 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiNet_h
#define defiNet_h

#include <stdio.h>
#include "defiKRDefs.hpp"
#include "defiPath.hpp"
#include "defiMisc.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE

class defrData;

/* Return codes for defiNet::viaOrient 
    DEF_ORIENT_N  0
    DEF_ORIENT_W  1
    DEF_ORIENT_S  2
    DEF_ORIENT_E  3
    DEF_ORIENT_FN 4
    DEF_ORIENT_FW 5
    DEF_ORIENT_FS 6
    DEF_ORIENT_FE 7
*/

class defiWire {
public:
  defiWire(defrData *data);
  ~defiWire();

  void Init(const char* type, const char* wireShieldName);
  void Destroy();
  void clear();
  void addPath(defiPath *p, int reset, int netOsnet, int *needCbk);

  const char* wireType() const;
  const char* wireShieldNetName() const;
  int         numPaths() const;

  defiPath*   path(int index);
  const defiPath*   path(int index) const;

  void bumpPaths(long long size);

protected:
  char*      type_;
  char*      wireShieldName_;    // It only set from specialnet SHIELD, 5.4
  int        numPaths_;
  long long  pathsAllocated_;
  defiPath** paths_;

  defrData  *defData;
};



class defiSubnet {
public:
  defiSubnet(defrData *data);
  void Init();

  void Destroy();
  ~defiSubnet();

  void setName(const char* name);
  void setNonDefault(const char* name);
  void addPin(const char* instance, const char* pin, int syn);
  void addMustPin(const char* instance, const char* pin, int syn);

  // WMD -- the following will be removed by the next release
  void setType(const char* typ);  // Either FIXED COVER ROUTED
  void addPath(defiPath* p, int reset, int netOsnet, int *needCbk);

  // NEW: a net can have more than 1 wire
  void addWire(const char *typ); 
  void addWirePath(defiPath *p, int reset, int netOsnet, int *needCbk);

  // Debug printing
  void print(FILE* f) const;

  const char* name() const;
  int numConnections() const;
  const char* instance(int index) const;
  const char* pin(int index) const;
  int pinIsSynthesized(int index) const;
  int pinIsMustJoin(int index) const;

  // WMD -- the following will be removed by the next release
  int isFixed() const;
  int isRouted() const;
  int isCover() const;

  int hasNonDefaultRule() const;

  // WMD -- the following will be removed by the next release
  int numPaths() const;
  defiPath* path(int index);
  const defiPath* path(int index) const;

  const char* nonDefaultRule() const;

  int         numWires() const;
  defiWire*   wire(int index);
  const defiWire*   wire(int index) const;

  void bumpName(long long size);
  void bumpPins(long long  size);
  void bumpPaths(long long  size);
  void clear();

protected:
  char*         name_;            // name.
  int           nameSize_;          // allocated size of name.
  int           numPins_;           // number of pins used in array.
  long long     pinsAllocated_;     // number of pins allocated in array.
  char**        instances_;      // instance names for connections
  char**        pins_;           // pin names for connections
  char*         synthesized_;     // synthesized flags for pins
  char*         musts_;           // must-join flags

  // WMD -- the following will be removed by the next release
  char       isFixed_;        // net type
  char       isRouted_;
  char       isCover_;
  defiPath** paths_;          // paths for this subnet
  int        numPaths_;       // number of paths used
  long long  pathsAllocated_; // allocated size of paths array

  int        numWires_;          // number of wires defined in the subnet
  long long  wiresAllocated_;    // number of wires allocated in the subnet
  defiWire** wires_;             // this replace the paths
  char*      nonDefaultRule_;

  defrData *defData;
};



class defiVpin {
public:
  defiVpin(defrData *data);
  ~defiVpin();

  void Init(const char* name);
  void Destroy();
  void setLayer(const char* name);
  void setBounds(int xl, int yl, int xh, int yh);
  void setOrient(int orient);
  void setLoc(int x, int y);
  void setStatus(char st);

  int xl() const ;
  int yl() const ;
  int xh() const ;
  int yh() const ;
  char status() const;      /* P-placed, F-fixed, C-cover, ' ' - not set */
  int orient() const ;
  const char* orientStr() const ;
  int xLoc() const;
  int yLoc() const;
  const char* name() const;
  const char* layer() const;

protected:
  int xl_;
  int yl_;
  int xh_;
  int yh_;
  int orient_;  /* 0-7  -1 is no orient */
  char status_; /* P-placed  F-fixed  C-cover  ' '- none */
  int xLoc_;
  int yLoc_;
  char* name_;
  char* layer_;

  defrData *defData;
};



// Pre 5.4
class defiShield {
public:
  defiShield(defrData *data);
  ~defiShield();

  void Init(const char* name);
  void Destroy();
  void clear();
  void addPath(defiPath *p, int reset, int netOsnet, int *needCbk);

  const char* shieldName() const;
  int         numPaths() const;

  defiPath*         path(int index);
  const defiPath*   path(int index) const;

  void bumpPaths(long long size);

protected:
  char*      name_;
  int        numPaths_;
  long long  pathsAllocated_;
  defiPath** paths_;

  defrData *defData;
};




// Struct holds the data for one component.
class defiNet {
public:
  defiNet(defrData *data);
  void Init();

  void Destroy();
  ~defiNet();

  // Routines used by YACC to set the fields in the net.
  void setName(const char* name);
  void addPin(const char* instance, const char* pin, int syn);
  void addMustPin(const char* instance, const char* pin, int syn);
  void setWeight(int w);

  // WMD -- the following will be removed by the next release
  void setType(const char* typ);  // Either FIXED COVER ROUTED

  void addProp(const char* name, const char* value, const char type);
  void addNumProp(const char* name, const double d,
                  const char* value, const char type);
  void addSubnet(defiSubnet* subnet);
  // NEW: a net can have more than 1 wire
  void addWire(const char *typ, const char* wireShieldName);
  void addWirePath(defiPath* p, int reset, int netOsnet, int *needCbk);
  void addShape(const char *shapeType);         // 5.8
  void setSource(const char* typ);
  void setFixedbump();                          // 5.4.1
  void setFrequency(double frequency);          // 5.4.1
  void setOriginal(const char* typ);
  void setPattern(const char* typ);
  void setCap(double w);
  void setUse(const char* typ);
  void setNonDefaultRule(const char* typ);
  void setStyle(int style);
  void addShield(const char* shieldNetName);    // pre 5.4
  void addNoShield(const char* shieldNetName);  // pre 5.4
  void addShieldNet(const char* shieldNetName);

  void addShieldPath(defiPath* p, int reset, int netOsnet, int *needCbk);
  void clear();
  void setWidth(const char* layer, double dist);
  void setSpacing(const char* layer, double dist);
  void setVoltage(double num);
  void setRange(double left, double right);
  void setXTalk(int num);
  void addVpin(const char* name);
  void addVpinLayer(const char* name);
  void addVpinLoc(const char* status, int x, int y, int orient);
  void addVpinBounds(int xl, int yl, int xh, int yh);
  // 5.6
  void addPolygon(const char* layerName, defiGeometries* geom, int *needCbk,
	          int mask, const char* routeStatus,
		  const char* shapeType,
                  const char* shieldNetName);
  void addRect(const char* layerName, int xl, int yl, int xh, int yh,
               int *needCbk, int mask, const char* routeStatus,
	       const char* shapeType,
               const char* shieldNetName); // 5.6
  void addPts(const char* viaName, int o, defiGeometries* geom,
	      int *needCbk, int mask, const char* routeStatus,
	      const char* shapeType,
              const char* shieldNetName);  //VIA 5.8

  // For OA to modify the netName, id & pinName
  void changeNetName(const char* name);
  void changeInstance(const char* name, int index);
  void changePin(const char* name, int index);

  // Routines to return the value of net data.
  const char*  name() const;
  int          weight() const;
  int          numProps() const;
  const char*  propName(int index) const;
  const char*  propValue(int index) const;
  double propNumber(int index) const;
  const char   propType(int index) const;
  int    propIsNumber(int index) const;
  int    propIsString(int index) const;
  int          numConnections() const;
  const char*  instance(int index) const;
  const char*  pin(int index) const;
  int          pinIsMustJoin(int index) const;
  int          pinIsSynthesized(int index) const;
  int          numSubnets() const;

  defiSubnet*  subnet(int index);
  const defiSubnet*  subnet(int index) const;

  // WMD -- the following will be removed by the next release
  int         isFixed() const;
  int         isRouted() const;
  int         isCover() const;

  /* The following routines are for wiring */
  int         numWires() const;

  defiWire*   wire(int index);
  const defiWire*   wire(int index) const;

  /* Routines to get the information about Virtual Pins. */
  int       numVpins() const;
  
  defiVpin* vpin(int index);
  const defiVpin* vpin(int index) const;

  int hasProps() const;
  int hasWeight() const;
  int hasSubnets() const;
  int hasSource() const;
  int hasFixedbump() const;                          // 5.4.1
  int hasFrequency() const;                          // 5.4.1
  int hasPattern() const;
  int hasOriginal() const;
  int hasCap() const;
  int hasUse() const;
  int hasStyle() const;
  int hasNonDefaultRule() const;
  int hasVoltage() const;
  int hasSpacingRules() const;
  int hasWidthRules() const;
  int hasXTalk() const;

  int numSpacingRules() const;
  void spacingRule(int index, char** layer, double* dist, double* left,
                   double* right) const;
  int numWidthRules() const;
  void widthRule(int index, char** layer, double* dist) const;
  double voltage() const;

  int            XTalk() const;
  const char*    source() const;
  double         frequency() const;
  const char*    original() const;
  const char*    pattern() const;
  double         cap() const;
  const char*    use() const;
  int            style() const;
  const char*    nonDefaultRule() const;

  // WMD -- the following will be removed by the next release
  int            numPaths() const;
  
  defiPath*            path(int index);
  const defiPath*      path(int index) const;

  int            numShields() const;          // pre 5.4

  defiShield*    shield(int index);           // pre 5.4
  const defiShield*    shield(int index) const ;           // pre 5.4

  int            numShieldNets() const;
  const char*    shieldNet(int index) const;
  int            numNoShields() const;        // pre 5.4

  defiShield*    noShield(int index);         // pre 5.4
  const defiShield*    noShield(int index) const;         // pre 5.4

  // 5.6
  int            numPolygons() const;                 // 5.6
  const  char*   polygonName(int index) const;        // 5.6
  struct defiPoints getPolygon(int index) const;      // 5.6
  int            polyMask(int index) const;
  const char*    polyRouteStatus(int index) const;
  const char*    polyRouteStatusShieldName(int index) const;
  const char*    polyShapeType(int index) const;


  int  numRectangles() const;                         // 5.6
  const  char* rectName(int index) const;             // 5.6
  int  xl(int index)const;                            // 5.6
  int  yl(int index)const;                            // 5.6
  int  xh(int index)const;                            // 5.6
  int  yh(int index)const;                            // 5.6
  int  rectMask(int index)const;
  const char* rectRouteStatus(int index) const;
  const char* rectRouteStatusShieldName(int index) const;
  const char* rectShapeType(int index) const;
  

  // 5.8
  int  numViaSpecs() const;
  struct defiPoints getViaPts(int index) const;                       
  const char* viaName(int index) const;
  const int viaOrient(int index) const;
  const char* viaOrientStr(int index) const;
  const int topMaskNum(int index) const;
  const int cutMaskNum(int index) const;
  const int bottomMaskNum(int index) const;
  const char* viaRouteStatus(int index) const;
  const char* viaRouteStatusShieldName(int index) const;
  const char* viaShapeType(int index) const;

  // Debug printing
  void print(FILE* f) const;


  void bumpName(long long size);
  void bumpPins(long long size);
  void bumpProps(long long size);
  void bumpSubnets(long long size);
  void bumpPaths(long long  size);
  void bumpShieldNets(long long size);

  // The method freeWire() is added is user select to have a callback
  // per wire within a net This is an internal method and is not public
  void freeWire();
  void freeShield();

  // Clear the rectangles & polygons data if partial path callback is set
  void clearRectPolyNPath();
  void clearRectPoly();
  void clearVia();

protected:
  char*     name_;          // name.
  int       nameSize_;      // allocated size of name.
  int       numPins_;       // number of pins used in array.
  long long pinsAllocated_; // number of pins allocated in array.
  char**    instances_;     // instance names for connections
  char**    pins_;          // pin names for connections
  char*     musts_;         // must-join flags for pins
  char*     synthesized_;   // synthesized flags for pins
  int       weight_;        // net weight
  char      hasWeight_;     // flag for optional weight

  // WMD -- the following will be removed by the nex release
  char isFixed_;        // net type
  char isRouted_;
  char isCover_;

  char hasCap_;         // file supplied a capacitance value
  char hasFrequency_;   // file supplied a frequency value
  char hasVoltage_;
  int numProps_;        // num of props in array
  char**  propNames_;   // Prop names
  char**  propValues_;  // Prop values All in strings!
  double* propDValues_; // Prop values in numbers!
  char*   propTypes_;   // Prop types, 'I' - Integer, 'R' - Real, 'S' - String

  long long    propsAllocated_;   // allocated size of props array
  int          numSubnets_;       // num of subnets in array
  defiSubnet** subnets_;          // Prop names
  long long    subnetsAllocated_; // allocated size of props array
  double       cap_;              // cap value
  char*        source_;
  int          fixedbump_;     // 5.4.1
  double       frequency_;     // 5.4.1
  char* pattern_;
  char* original_;
  char* use_;
  char* nonDefaultRule_;
  int   style_;

  // WMD -- the following will be removed by the nex release
  defiPath** paths_;          // paths for this subnet
  int        numPaths_;       // number of paths used
  long long  pathsAllocated_; // allocated size of paths array

  double voltage_;

  int         numWires_;         // number of wires defined in the net
  long long   wiresAllocated_;   // allocated size of wire paths array
  defiWire**  wires_;            // this replace the paths

  long long   widthsAllocated_;
  int         numWidths_;
  char**      wlayers_;
  double*     wdist_;

  long long   spacingAllocated_;
  int         numSpacing_;
  char**      slayers_;
  double*     sdist_;
  double*     sleft_;
  double*     sright_;
  int         xTalk_;

  int         numVpins_;
  long long   vpinsAllocated_;
  defiVpin**  vpins_;

  int          numShields_;            // number of SHIELD paths used
  long long    shieldsAllocated_;      // allocated size of SHIELD paths array
  defiShield** shields_;               // SHIELD data 
  int          numNoShields_;          // number of NOSHIELD paths used

  int          numShieldNet_;          // number of SHIELDNETS used in array.
  long long    shieldNetsAllocated_;   // number of SHIELDNETS allocated in array.
  char**       shieldNet_;             // name of the SHIELDNET

  int          numPolys_;              // 5.6
  char**       polygonNames_;          // 5.6 layerName for POLYGON
  long long    polysAllocated_;        // 5.6
  struct defiPoints** polygons_;       // 5.6
  int*         polyMasks_;
  char** polyRouteStatus_;
  char** polyShapeTypes_;
  char** polyRouteStatusShieldNames_;

  int        numRects_;                    // 5.6
  long long  rectsAllocated_;              // 5.6
  char**     rectNames_;                   // 5.6
  int* xl_;
  int* yl_;
  int* xh_;
  int* yh_;
  int* rectMasks_;
  char** rectRouteStatus_;
  char** rectRouteStatusShieldNames_;
  char** rectShapeTypes_;
  

  struct defiPoints** viaPts_;      // 5.8                  
  char**              viaNames_;                   
  int                 numPts_;                    
  long long           ptsAllocated_;
  int*                viaOrients_;
  int*                viaMasks_;
  char**              viaRouteStatus_;
  char**              viaRouteStatusShieldNames_;
  char**              viaShapeTypes_;

  defrData *defData;
};

END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiNonDefault.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiNonDefault_h
#define defiNonDefault_h

#include <stdio.h>
#include "defiKRDefs.hpp"
#include "defiMisc.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE

class defiNonDefault {
public:
  defiNonDefault(defrData *data);
  void Init();

  void Destroy();
  ~defiNonDefault();

  void clear();
  void setName(const char* name);
  void setHardspacing();
  void addLayer(const char* name);
  void addWidth(double num);
  void addDiagWidth(double num);
  void addSpacing(double num);
  void addWireExt(double num);
  void addVia(const char* name);
  void addViaRule(const char* name);
  void addMinCuts(const char* name, int numCuts);
  void addProperty(const char* name, const char* value, const char type);
  void addNumProperty(const char* name, const double d,
                      const char* value, const char type);
  void end();

  const char* name() const;
  int   hasHardspacing() const;

  int         numProps() const;
  const char* propName(int index) const;
  const char* propValue(int index) const;
  double      propNumber(int index) const;
  const char  propType(int index) const;
  int         propIsNumber(int index) const;
  int         propIsString(int index) const;
  
  // A non default rule can have one or more layers.
  // The layer information is kept in an array.
  int         numLayers() const ;
  const char* layerName(int index) const ;
  double      layerWidth(int index) const ;       // Will be obsoleted in 5.7
  int         layerWidthVal(int index) const ;
  int         hasLayerDiagWidth(int index) const;
  double      layerDiagWidth(int index) const;    // Will be obsoleted in 5.7
  int         layerDiagWidthVal(int index) const;
  int         hasLayerSpacing(int index) const ;
  double      layerSpacing(int index) const ;     // Will be obsoleted in 5.7
  int         layerSpacingVal(int index) const ;
  int         hasLayerWireExt(int index) const ;
  double      layerWireExt(int index) const ;     // Will be obsoleted in 5.7
  int         layerWireExtVal(int index) const ;
  int         numVias() const ;
  const char* viaName(int index) const ;
  int         numViaRules() const ;
  const char* viaRuleName(int index) const ;
  int         numMinCuts() const;
  const char* cutLayerName(int index) const;
  int         numCuts(int index) const;

  // Debug print
  void print(FILE* f) const;

protected:
  char*   name_;
  char    hardSpacing_;

  // Layer information
  int     numLayers_;
  int     layersAllocated_;
  char**  layerName_;
  double* width_;
  char*   hasDiagWidth_;
  double* diagWidth_;
  char*   hasSpacing_;
  double* spacing_;
  char*   hasWireExt_;
  double* wireExt_;

  int     numVias_;
  int     viasAllocated_;
  char**  viaNames_;
  int     numViaRules_;
  int     viaRulesAllocated_;
  char**  viaRuleNames_;
  int     numMinCuts_;
  int     minCutsAllocated_;
  char**  cutLayerName_;
  int*    numCuts_;

  int     numProps_;
  int     propsAllocated_;
  char**  names_;
  char**  values_;
  double* dvalues_;
  char*   types_;

  defrData *defData;
};

END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiPartition.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiPartition_h
#define defiPartition_h

#include <stdio.h>
#include "defiKRDefs.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE

class defrData;

class defiPartition {
public:
  defiPartition(defrData *data);
  void Init();

  void Destroy();
  ~defiPartition();

  void clear();

  void setName(const char* name);
  void addTurnOff(const char* setup, const char* hold);
  void setFromClockPin(const char* inst, const char* pin);
  void setFromCompPin(const char* inst, const char* pin);
  void setFromIOPin(const char* inst);
  void setToClockPin(const char* inst, const char* pin);
  void setToCompPin(const char* inst, const char* pin);
  void set(char dir, char typ, const char* inst, const char* pin);
  void setToIOPin(const char* inst);
  void setMin(double min, double max);
  void setMax(double min, double max);
  void addPin(const char* name);
  void addRiseMin(double d);
  void addRiseMax(double d);
  void addFallMin(double d);
  void addFallMax(double d);
  void addRiseMinRange(double l, double h);
  void addRiseMaxRange(double l, double h);
  void addFallMinRange(double l, double h);
  void addFallMaxRange(double l, double h);

  const char* name() const;
  char direction() const;
  const char* itemType() const;  // "CLOCK" or "IO" or "COMP"
  const char* pinName() const;
  const char* instName() const;

  int numPins() const;
  const char* pin(int index) const;

  int isSetupRise() const;
  int isSetupFall() const;
  int isHoldRise() const;
  int isHoldFall() const;
  int hasMin() const;
  int hasMax() const;
  int hasRiseMin() const;
  int hasFallMin() const;
  int hasRiseMax() const;
  int hasFallMax() const;
  int hasRiseMinRange() const;
  int hasFallMinRange() const;
  int hasRiseMaxRange() const;
  int hasFallMaxRange() const;

  double partitionMin() const;
  double partitionMax() const;

  double riseMin() const;
  double fallMin() const;
  double riseMax() const;
  double fallMax() const;

  double riseMinLeft() const;
  double fallMinLeft() const;
  double riseMaxLeft() const;
  double fallMaxLeft() const;
  double riseMinRight() const;
  double fallMinRight() const;
  double riseMaxRight() const;
  double fallMaxRight() const;

  // debug print
  void print(FILE* f) const;

protected:
  char* name_;
  int nameLength_;
  char setup_;
  char hold_;
  char hasMin_;
  char hasMax_;
  char direction_;   // 'F' or 'T'
  char type_;        // 'L'-clock   'I'-IO  'C'-comp
  char* inst_;
  int instLength_;
  char* pin_;
  int pinLength_;
  double min_, max_;

  int numPins_;
  int pinsAllocated_;
  char** pins_;

  char hasRiseMin_;
  char hasFallMin_;
  char hasRiseMax_;
  char hasFallMax_;
  char hasRiseMinRange_;
  char hasFallMinRange_;
  char hasRiseMaxRange_;
  char hasFallMaxRange_;
  double riseMin_;
  double fallMin_;
  double riseMax_;
  double fallMax_;
  double riseMinLeft_;
  double fallMinLeft_;
  double riseMaxLeft_;
  double fallMaxLeft_;
  double riseMinRight_;
  double fallMinRight_;
  double riseMaxRight_;
  double fallMaxRight_;

  defrData *defData;
};


END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiPath.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013-2014, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiPath_h
#define defiPath_h

#include <stdio.h>
#include "defiKRDefs.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE

// TX_DIR:TRANSLATION ON

class defrData;

struct defiPnt {
  int x;
  int y;
  int ext;
};

// 5.4.1 1-D & 2-D Arrays of Vias in SPECIALNET Section
struct defiViaData {
  int numX;
  int numY;
  int stepX;
  int stepY;
};

struct defiViaRect {
  int deltaX1;
  int deltaY1;
  int deltaX2;
  int deltaY2;
};

// value returned by the next() routine.
enum defiPath_e {
  DEFIPATH_DONE = 0,
  DEFIPATH_LAYER,
  DEFIPATH_VIA,
  DEFIPATH_VIAROTATION,
  DEFIPATH_WIDTH,
  DEFIPATH_POINT,
  DEFIPATH_FLUSHPOINT,
  DEFIPATH_TAPER,
  DEFIPATH_SHAPE,
  DEFIPATH_STYLE,
  DEFIPATH_TAPERRULE,
  DEFIPATH_VIADATA,
  DEFIPATH_RECT,
  DEFIPATH_VIRTUALPOINT,
  DEFIPATH_MASK,
  DEFIPATH_VIAMASK
  } ;


class defiPath {
public:
  defiPath(defrData *data);
  // This is 'data ownership transfer' constructor.
  defiPath(defiPath *defiPathRef);

  void Init();

  void Destroy();
  ~defiPath();

  void clear();
  void reverseOrder();

  // To traverse the path and get the parts.
  void initTraverse() const;   // Initialize the traverse.
  void initTraverseBackwards() const;   // Initialize the traverse in reverse.
  int next() const;            // Get the next element.
  int prev() const;            // Get the next element in reverse.
  const char* getLayer() const;// Get the layer.
  const char* getTaperRule() const;// Get the rule.
  const char* getVia() const;  // Get the via.
  const char* getShape() const;// Get the shape.
  int  getTaper() const;// Get the taper.
  int  getStyle() const;// Get the style.
  int  getViaRotation() const;  // Get the via rotation.
  void getViaRect(int* deltaX1, int* deltaY1, int* deltaX2, int* deltaY2) const;
  const char* getViaRotationStr() const;   // Return via rotation in string format
  void getViaData(int* numX, int* numY, int* stepX, int* stepY) const;  // 5.4.1
  int  getWidth() const;        // Get the width.
  void getPoint(int* x, int* y) const;// Get the point.
  void getFlushPoint(int* x, int* y, int* ext) const;// Get the point.
  void getVirtualPoint(int* x, int* y) const;
  int  getMask() const;
  int  getViaTopMask() const;
  int  getViaCutMask() const;
  int  getViaBottomMask() const;
  int  getRectMask() const;


  // These routines are called by the parser to fill the path.
  void addWidth(int w);
  void addPoint(int x, int y);
  void addFlushPoint(int x, int y, int ext);
  void addVirtualPoint(int x, int y);
  void addLayer(const char* layer);
  void addVia(const char* name);
  void addViaRotation(int orient);
  void addViaRect(int deltaX1, int deltaY1, int deltaX2, int deltaY2);
  void addMask(int colorMask);
  void addViaMask(int colorMask);
  void addViaData(int numX, int numY, int stepX, int stepY);   // 5.4.1
  void setTaper();
  void addTaperRule(const char* rule);
  void addShape(const char* shape);
  void addStyle(int style);

  // debug printing
  void print(FILE* fout) const;

  void bumpSize(int size);

protected:
  int currentType() const;

  int* keys_;           // type of item in path
  void** data_;         // extra data
  int numUsed_;         // number of items used in array
  int numAllocated_;    // allocated size of keys and data
  int* pointer_;        // traversal pointer, allocated because used
                        // as iterator in const traversal functions.
  int numX_;      
  int numY_;
  int stepX_;
  int stepY_;
  int deltaX_;
  int deltaY_;
  int mask_;

  defrData *defData;
};

END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiPinCap.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiPinCap_h
#define defiPinCap_h


#include "defiKRDefs.hpp"
#include "defiMisc.hpp"
#include <stdio.h>

BEGIN_LEFDEF_PARSER_NAMESPACE

class defrData;

class defiPinCap {
public:

  void setPin(int p);
  void setCap(double d);

  int pin() const;
  double cap() const;

  void print(FILE* f) const;

protected:
  int pin_;        // pin num
  double cap_;     // capacitance
};


// 5.5
class defiPinAntennaModel {
public:
  defiPinAntennaModel(defrData *data);
  void Init();

  ~defiPinAntennaModel();
  void clear();
  void Destroy();

  void setAntennaModel(int oxide);
  void addAPinGateArea(int value, const char* layer);
  void addAPinMaxAreaCar(int value, const char* layer);
  void addAPinMaxSideAreaCar(int value, const char* layer);
  void addAPinMaxCutCar(int value, const char* layer);

  char* antennaOxide() const;

  int hasAPinGateArea() const;               // ANTENNAPINGATEAREA
  int numAPinGateArea() const;
  int APinGateArea(int index) const;
  int hasAPinGateAreaLayer(int index) const;
  const char* APinGateAreaLayer(int index) const;

  int hasAPinMaxAreaCar() const;             // ANTENNAPINMAXAREACAR
  int numAPinMaxAreaCar() const;
  int APinMaxAreaCar(int index) const;
  int hasAPinMaxAreaCarLayer(int index) const;
  const char* APinMaxAreaCarLayer(int index) const;

  int hasAPinMaxSideAreaCar() const;         // ANTENNAPINMAXSIDEAREACAR
  int numAPinMaxSideAreaCar() const;
  int APinMaxSideAreaCar(int index) const;
  int hasAPinMaxSideAreaCarLayer(int index) const;
  const char* APinMaxSideAreaCarLayer(int index) const;

  int hasAPinMaxCutCar() const;              // ANTENNAPINMAXCUTCAR
  int numAPinMaxCutCar() const;
  int APinMaxCutCar(int index) const;
  int hasAPinMaxCutCarLayer(int index) const;
  const char* APinMaxCutCarLayer(int index) const;

protected:
  char* oxide_;

  int numAPinGateArea_;                  // 5.4
  int APinGateAreaAllocated_;
  int* APinGateArea_;                    // 5.4 AntennaPinGateArea
  char** APinGateAreaLayer_;             // 5.4 Layer

  int numAPinMaxAreaCar_;                // 5.4
  int APinMaxAreaCarAllocated_;
  int* APinMaxAreaCar_;                  // 5.4 AntennaPinMaxAreaCar
  char** APinMaxAreaCarLayer_;           // 5.4 Layer

  int numAPinMaxSideAreaCar_;            // 5.4
  int APinMaxSideAreaCarAllocated_;
  int* APinMaxSideAreaCar_;              // 5.4 AntennaPinMaxSideAreaCar
  char** APinMaxSideAreaCarLayer_;       // 5.4 Layer

  int numAPinMaxCutCar_;                 // 5.4
  int APinMaxCutCarAllocated_;
  int* APinMaxCutCar_;                   // 5.4 AntennaPinMaxCutCar
  char** APinMaxCutCarLayer_;            // 5.4 Layer

  defrData *defData;
};

class defiPinPort {                      // 5.7
public:
  defiPinPort(defrData *data);
  void Init();

  ~defiPinPort();

  void clear();

  void addLayer(const char* layer);
  void addLayerSpacing(int minSpacing);
  void addLayerMask(int mask);
  void addLayerDesignRuleWidth(int effectiveWidth);
  void addLayerPts(int xl, int yl, int xh, int yh);
  void addPolygon(const char* layerName);
  void addPolySpacing(int minSpacing);
  void addPolyMask(int mask);
  void addPolyDesignRuleWidth(int effectiveWidth);
  void addPolygonPts(defiGeometries* geom);
  void addVia(const char* via, int viaX, int viaY, int color = 0);
  void setPlacement(int typ, int x, int y, int orient);

  int   numLayer() const;
  const char* layer(int index) const;
  void  bounds(int index, int* xl, int* yl, int* xh, int* yh) const;
  int   hasLayerSpacing(int index) const;
  int   hasLayerDesignRuleWidth(int index) const;
  int   layerSpacing(int index) const;
  int   layerMask(int index) const;
  int   layerDesignRuleWidth(int index) const;
  int   numPolygons() const;
  const char* polygonName(int index) const;
  defiPoints getPolygon(int index) const;
  int   hasPolygonSpacing(int index) const;
  int   hasPolygonDesignRuleWidth(int index) const;
  int   polygonSpacing(int index) const;
  int   polygonDesignRuleWidth(int index) const;
  int   polygonMask(int index) const;
  int   numVias() const;
  const char* viaName(int index) const;
  int   viaPtX (int index) const;
  int   viaPtY (int index) const;
  int   viaTopMask (int index) const;
  int   viaCutMask (int index) const;
  int   viaBottomMask (int index) const;
  int   hasPlacement() const;
  int   isPlaced() const;
  int   isCover() const;
  int   isFixed() const;
  int   placementX() const;
  int   placementY() const;
  int   orient() const;
  const char* orientStr() const;

protected:
  int    layersAllocated_;
  int    numLayers_;
  char** layers_;
  int    *layerMinSpacing_;
  int    *layerEffectiveWidth_;
  int    *xl_, *yl_, *xh_, *yh_;
  int    *layerMask_;
  int    polysAllocated_;
  int    numPolys_;
  char** polygonNames_;
  int    *polyMinSpacing_;
  int    *polyMask_;
  int    *polyEffectiveWidth_;
  defiPoints** polygons_;
  int    viasAllocated_;
  int    numVias_;
  char** viaNames_;
  int    *viaX_;
  int    *viaY_;
  int    *viaMask_;
  char   placeType_;
  int    x_, y_;
  char   orient_;

  defrData *defData;
};

class defiPin {
public:
  defiPin(defrData *data);
  void Init();

  ~defiPin();
  void Destroy();

  void Setup(const char* pinName, const char* netName);
  void setDirection(const char* dir);
  void setUse(const char* use);
  // 5.6 setLayer is changed to addLayer due to multiple LAYER are allowed
  // in 5.6
  void addLayer(const char* layer);
  void addLayerMask(int mask);                                    // 5.8
  void addLayerSpacing(int minSpacing);                           // 5.6
  void addLayerDesignRuleWidth(int effectiveWidth);               // 5.6
  void addLayerPts(int xl, int yl, int xh, int yh);
  void addPolygon(const char* layerName);                         // 5.6
  void addPolyMask(int mask);                                     // 5.8
  void addPolySpacing(int minSpacing);                            // 5.6
  void addPolyDesignRuleWidth(int effectiveWidth);                // 5.6
  void addPolygonPts(defiGeometries* geom);                       // 5.6
  void setNetExpr(const char* netExpr);                           // 5.6
  void setSupplySens(const char* pinName);                        // 5.6
  void setGroundSens(const char* pinName);                        // 5.6
  void setPlacement(int typ, int x, int y, int orient);
  void setSpecial();
  void addAntennaModel(int oxide);                                // 5.5
  void addAPinPartialMetalArea(int value, const char* layer);
  void addAPinPartialMetalSideArea(int value, const char* layer);
  void addAPinGateArea(int value, const char* layer);
  void addAPinDiffArea(int value, const char* layer);
  void addAPinMaxAreaCar(int value, const char* layer);
  void addAPinMaxSideAreaCar(int value, const char* layer);
  void addAPinPartialCutArea(int value, const char* layer);
  void addAPinMaxCutCar(int value, const char* layer);
  void addVia(const char* via, int viaX, int viaY, int color = 0);               // 5.7
  // 5.7 port statements, which may have LAYER, POLYGON, &| VIA
  void addPort();                                                 // 5.7
  void addPortLayer(const char* layer);                           // 5.7
  void addPortLayerSpacing(int minSpacing);                       // 5.7
  void addPortLayerDesignRuleWidth(int effectiveWidth);           // 5.7
  void addPortLayerPts(int xl, int yl, int xh, int yh);           // 5.7
  void addPortLayerMask(int color);                               // 5.8
  void addPortPolygon(const char* layerName);                     // 5.7
  void addPortPolySpacing(int minSpacing);                        // 5.7
  void addPortPolyDesignRuleWidth(int effectiveWidth);            // 5.7
  void addPortPolygonPts(defiGeometries* geom);                   // 5.7
  void addPortPolyMask(int color);                                // 5.8
  void addPortVia(const char* via, int viaX, int viaY, int color = 0);           // 5.7
  void setPortPlacement(int typ, int x, int y, int orient);       // 5.7 - 5.8

  void clear();

  void changePinName(const char* pinName);       // For OA to modify the pinName

  const char* pinName() const;
  const char* netName() const;
  // optional parts
  int hasDirection() const;
  int hasUse() const;
  int hasLayer() const;
  int hasPlacement() const;
  int isUnplaced() const;
  int isPlaced() const;
  int isCover() const;
  int isFixed() const;
  int placementX() const;
  int placementY() const;
  const char* direction() const;
  const char* use() const;
  int numLayer() const;
  const char* layer(int index) const;
  void bounds(int index, int* xl, int* yl, int* xh, int* yh) const;
  int layerMask(int index) const;                     // 5.8
  int hasLayerSpacing(int index) const;               // 5.6
  int hasLayerDesignRuleWidth(int index) const;       // 5.6
  int layerSpacing(int index) const;                  // 5.6
  int layerDesignRuleWidth(int index) const;          // 5.6
  int  numPolygons() const;                           // 5.6
  const  char* polygonName(int index) const;          // 5.6
  defiPoints getPolygon(int index) const;      // 5.6
  int polygonMask(int index) const;                      // 5.8
  int hasPolygonSpacing(int index) const;             // 5.6
  int hasPolygonDesignRuleWidth(int index) const;     // 5.6
  int polygonSpacing(int index) const;                // 5.6
  int polygonDesignRuleWidth(int index) const;        // 5.6
  int  hasNetExpr() const;                            // 5.6
  int  hasSupplySensitivity() const;                  // 5.6
  int  hasGroundSensitivity() const;                  // 5.6
  const char* netExpr() const;                        // 5.6
  const char* supplySensitivity() const;              // 5.6
  const char* groundSensitivity() const;              // 5.6
  int orient() const;
  const char* orientStr() const;
  int hasSpecial() const;
  int numVias() const;                                // 5.7
  const char* viaName(int index) const;               // 5.7
  int viaTopMask(int index) const;                    // 5.8
  int viaCutMask(int index) const;                    // 5.8
  int viaBottomMask(int index) const;                 // 5.8
  int viaPtX (int index) const;                       // 5.7
  int viaPtY (int index) const;                       // 5.7

  // 5.4
  int hasAPinPartialMetalArea() const;       // ANTENNAPINPARTIALMETALAREA
  int numAPinPartialMetalArea() const;
  int APinPartialMetalArea(int index) const;
  int hasAPinPartialMetalAreaLayer(int index) const;
  const char* APinPartialMetalAreaLayer(int index) const;

  int hasAPinPartialMetalSideArea() const;   // ANTENNAPINPARTIALMETALSIDEAREA
  int numAPinPartialMetalSideArea() const;
  int APinPartialMetalSideArea(int index) const;
  int hasAPinPartialMetalSideAreaLayer(int index) const;
  const char* APinPartialMetalSideAreaLayer(int index) const;

  int hasAPinDiffArea() const;               // ANTENNAPINDIFFAREA
  int numAPinDiffArea() const;
  int APinDiffArea(int index) const;
  int hasAPinDiffAreaLayer(int index) const;
  const char* APinDiffAreaLayer(int index) const;

  int hasAPinPartialCutArea() const;         // ANTENNAPINPARTIALCUTAREA
  int numAPinPartialCutArea() const;
  int APinPartialCutArea(int index) const;
  int hasAPinPartialCutAreaLayer(int index) const;
  const char* APinPartialCutAreaLayer(int index) const;

  // 5.5
  int numAntennaModel() const;
  defiPinAntennaModel* antennaModel(int index) const;

  // 5.7
  int  hasPort() const;
  int  numPorts() const;
  defiPinPort* pinPort(int index) const;
  void print(FILE* f) const;

protected:
  int pinNameLength_;    // allocated size of pin name
  char* pinName_;
  int netNameLength_;    // allocated size of net name
  char* netName_;
  char hasDirection_;
  char hasUse_;
  char placeType_;
  char orient_;          // orient 0-7
  int useLength_;        // allocated size of length
  char* use_;
  int directionLength_;  // allocated size of direction
  char* direction_;
  char** layers_;                   // 5.6, changed to array
  int *xl_, *yl_, *xh_, *yh_;       // 5.6, changed to arrays
  int *layerMinSpacing_;            // 5.6, SPACING in LAYER
  int *layerEffectiveWidth_;        // 5.6, DESIGNRULEWIDTH in LAYER
  int layersAllocated_;             // 5.6
  int numLayers_;                   // 5.6
  int *layerMask_;                  // 5.8
  char** polygonNames_;             // 5.6 layerName for POLYGON
  int *polyMinSpacing_;             // 5.6, SPACING in POLYGON
  int *polyEffectiveWidth_;         // 5.6, DESIGNRULEWIDTH in POLYGON
  int *polyMask_;                   // 5.8
  int numPolys_;                    // 5.6
  int polysAllocated_;              // 5.6
  defiPoints** polygons_;    // 5.6 
  int x_, y_;            // placement
  int hasSpecial_;
  int numVias_;                     // 5.7
  int viasAllocated_;               // 5.7
  char** viaNames_;                 // 5.7
  int *viaX_;                       // 5.7
  int *viaY_;                       // 5.7
  int *viaMask_;                    // 5.8
  int numPorts_;                    // 5.7
  int portsAllocated_;              // 5.7
  defiPinPort ** pinPort_;          // 5.7

  // 5.5 AntennaModel
  int numAntennaModel_;
  int antennaModelAllocated_;
  defiPinAntennaModel** antennaModel_;

  int numAPinPartialMetalArea_;          // 5.4
  int APinPartialMetalAreaAllocated_;
  int* APinPartialMetalArea_;            // 5.4 AntennaPinPartialMetalArea
  char** APinPartialMetalAreaLayer_;     // 5.4 Layer

  int numAPinPartialMetalSideArea_;      // 5.4
  int APinPartialMetalSideAreaAllocated_;
  int* APinPartialMetalSideArea_;        // 5.4 AntennaPinPartialMetalSideArea
  char** APinPartialMetalSideAreaLayer_; // 5.4 Layer

  int numAPinDiffArea_;                  // 5.4
  int APinDiffAreaAllocated_;
  int* APinDiffArea_;                    // 5.4 AntennaPinDiffArea
  char** APinDiffAreaLayer_;             // 5.4 Layer

  int numAPinPartialCutArea_;            // 5.4
  int APinPartialCutAreaAllocated_;
  int* APinPartialCutArea_;              // 5.4 AntennaPinPartialCutArea
  char** APinPartialCutAreaLayer_;       // 5.4 Layer

  int netExprLength_;                    // 5.6
  char hasNetExpr_;                      // 5.6
  char* netExpr_;                        // 5.6
  int supplySensLength_;                 // 5.6
  char hasSupplySens_;                   // 5.6
  char* supplySens_;                     // 5.6
  int groundSensLength_;                 // 5.6
  char hasGroundSens_;                   // 5.6
  char* groundSens_;                     // 5.6

  defrData *defData;
};

END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiPinProp.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiPinProp_h
#define defiPinProp_h

#include "defiKRDefs.hpp"
#include <stdio.h>

BEGIN_LEFDEF_PARSER_NAMESPACE

class defrData;

class defiPinProp {
public:
  defiPinProp(defrData *data);
  void Init();

  ~defiPinProp();
  void Destroy();

  void clear();

  void setName(const char* inst, const char* pin);
  void addProperty(const char* name, const char* value, const char type);
  void addNumProperty(const char* name, const double d,
                      const char* value, const char type);

  int isPin() const;
  const char* instName() const;
  const char* pinName() const;

  int numProps() const;
  const char*  propName(int index) const;
  const char*  propValue(int index) const;
  double propNumber(int index) const;
  const char   propType(int index) const;
  int    propIsNumber(int index) const;
  int    propIsString(int index) const;

  void print(FILE* f) const;

protected:
  char isPin_;
  int instNameSize_;
  char* instName_;
  int pinNameSize_;
  char* pinName_;

  int numProps_;
  int propsAllocated_;
  char**  propNames_;
  char**  propValues_;
  double* propDValues_;
  char*   propTypes_;

  defrData *defData;
};


END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiProp.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiProp_h
#define defiProp_h

#include "defiKRDefs.hpp"
#include <stdio.h>

BEGIN_LEFDEF_PARSER_NAMESPACE

class defrData;

// Struct holds the data for one property.
class defiProp {
public:
  defiProp(defrData *data);
  void Init();

  void Destroy();
  ~defiProp();

  void setPropType(const char* typ, const char* string);
  void setRange(double left, double right);
  void setNumber(double num);
  void setPropInteger();
  void setPropReal();
  void setPropString();
  void setPropQString(const char* string);
  void setPropNameMapString(const char* string);
  void clear();

  const char* string() const;
  const char* propType() const;
  const char* propName() const;
  char  dataType() const;
       // either I:integer R:real S:string Q:quotedstring N:nameMapString
  int hasNumber() const;
  int hasRange() const;
  int hasString() const;
  int hasNameMapString() const;
  double number() const;
  double left() const;
  double right() const;

  void bumpSize(int size);
  void bumpName(int size);

  void print(FILE* f) const;

protected:
  char* propType_;      // "design" ...
  char* propName_;      // name.
  int nameSize_;        // allocated size of name.
  char hasRange_;       // either 0:NO or 1:YES.
  char hasNumber_;      // either 0:NO or 1:YES.
  char hasNameMapString_;
  char dataType_;       // either I:integer R:real S:string Q:quotedstring.
                        //   N:nameMapString
  char* stringData_;    // if it is a string the data is here.
  int stringLength_;    // allocated size of stringData.
  double left_, right_; // if it has a range the numbers are here.
  double d_;            // if it is a real or int the number is here.

  defrData *defData;
};


END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiPropType.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiPropType_h
#define defiPropType_h

#include "defiKRDefs.hpp"
#include <stdio.h>

BEGIN_LEFDEF_PARSER_NAMESPACE

// Struct holds the data type for one property, if the property is
// either REAL or INTEGER.
class defiPropType {
public:
  defiPropType();
  void Init();

  void Destroy();
  ~defiPropType();

  void setPropType(const char* name, const char type);
  void Clear();

  const char propType(char* name) const;
  void bumpProps();

protected:
  int    numProperties_;
  int    propertiesAllocated_;
  char** propNames_;      // name.
  char*  propTypes_;      // 'R' == "REAL", 'I' == "INTEGER"
};


END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiRegion.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiRegion_h
#define defiRegion_h

#include "defiKRDefs.hpp"
#include <stdio.h>

BEGIN_LEFDEF_PARSER_NAMESPACE

class defrData;

// Struct holds the data for one property.
class defiRegion {
public:
  defiRegion(defrData *data);
  void Init();

  void Destroy();
  ~defiRegion();

  void clear();
  void setup(const char* name);
  void addRect(int xl, int yl, int xh, int yh);
  void addProperty(const char* name, const char* value, const char type);
  void addNumProperty(const char* name, const double d,
                      const char* value, const char type);
  void setType(const char* type);         // 5.4.1

  const char* name() const;

  int numProps() const;
  const char*  propName(int index) const;
  const char*  propValue(int index) const;
  double propNumber(int index) const;
  const char   propType(int index) const;
  int propIsNumber(int index) const;
  int propIsString(int index) const;

  int hasType() const;                    // 5.4.1
  const char* type() const;               // 5.4.1

  int numRectangles() const;
  int xl(int index) const;
  int yl(int index) const;
  int xh(int index) const;
  int yh(int index) const;

  void print(FILE* f) const;

protected:
  char* name_;
  int nameLength_;

  int numRectangles_;
  int rectanglesAllocated_;
  int* xl_;
  int* yl_;
  int* xh_;
  int* yh_;

  int numProps_;
  int propsAllocated_;
  char**  propNames_;
  char**  propValues_;
  double* propDValues_;
  char*   propTypes_;

  char* type_;

  defrData *defData;
};



END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiRowTrack.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiRowTrack_h
#define defiRowTrack_h

#include "defiKRDefs.hpp"
#include <stdio.h>

BEGIN_LEFDEF_PARSER_NAMESPACE

class defrData;

class defiRow{
public:

  defiRow(defrData *data);
  void Init();

  ~defiRow();
  void Destroy();
  void clear();

  void setup(const char* name, const char* macro,
	     double x, double y, int orient);
  void setDo(double x_num, double y_num,
	     double x_step, double y_step);
  void setHasDoStep();
  void addProperty(const char* name, const char* value, const char type);
  void addNumProperty(const char* name, const double d, 
                      const char* value, const char type);

  const char* name() const;
  const char* macro() const;
  double x() const;
  double y() const;
  int orient() const;
  const char* orientStr() const;
  int hasDo() const;               // 5.6, DO is optional
  double xNum() const;
  double yNum() const;
  int hasDoStep() const;           // 5.6, STEP is optional in DO
  double xStep() const;
  double yStep() const;

  int numProps() const;
  const char*  propName(int index) const;
  const char*  propValue(int index) const;
  double propNumber(int index) const;
  const char   propType(int index) const;
  int propIsNumber(int index) const;
  int propIsString(int index) const;

  void print(FILE* f) const;

protected:
  int nameLength_;
  char* name_;
  int macroLength_;
  char* macro_;
  double x_;
  double y_;
  double xNum_;
  double yNum_;
  int orient_;
  double xStep_;
  double yStep_;
  int    hasDo_;
  int    hasDoStep_;

  int numProps_;
  int propsAllocated_;
  char**  propNames_;
  char**  propValues_;
  double* propDValues_;
  char*   propTypes_;

  defrData *defData;
};



class defiTrack{
public:

  defiTrack(defrData *data);
  void Init();

  ~defiTrack();
  void Destroy();

  void setup(const char* macro);
  void setDo(double x, double x_num, double x_step);
  void addLayer(const char* layer);
  void addMask(int colorMask, int sameMask);

  const char* macro() const;
  double x() const;
  double xNum() const;
  double xStep() const;
  int numLayers() const;
  const char* layer(int index) const;
  int firstTrackMask() const;
  int sameMask() const;

  void print(FILE* f) const;

protected:
  int macroLength_;  // allocated size of macro_;
  char* macro_;
  double x_;
  double xNum_;
  double xStep_;
  int layersLength_;  // allocated size of layers_
  int numLayers_;  // number of places used in layers_
  char** layers_;
  int firstTrackMask_;
  int samemask_;

  defrData *defData;
};



class defiGcellGrid {
public:

  defiGcellGrid(defrData *data);
  void Init();

  ~defiGcellGrid();
  void Destroy();

  void setup(const char* macro, int x, int xNum, double xStep);

  const char* macro() const;
  int x() const;
  int xNum() const;
  double xStep() const;

  void print(FILE* f) const;

protected:
  int macroLength_;
  char* macro_;
  int x_;
  int xNum_;
  double xStep_;

  defrData *defData;
};


END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiScanchain.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiScanchain_h
#define defiScanchain_h

#include "defiKRDefs.hpp"
#include <stdio.h>

BEGIN_LEFDEF_PARSER_NAMESPACE

class defrData;

class defiOrdered {
public:
  defiOrdered(defrData *data);
  ~defiOrdered();

  void addOrdered(const char* inst);
  void addIn(const char* pin);
  void addOut(const char* pin);
  void setOrderedBits(int bits);        // 5.4.1
  void bump();
  void Init();
  void Destroy();
  void clear();

  int num() const;
  char** inst() const;
  char** in() const;
  char** out() const;
  int*   bits() const;                  // 5.4.1

protected:
  int num_;
  int allocated_;
  char** inst_;
  char** in_;
  char** out_;
  int*   bits_;                       // 5.4.1
    
  defrData *defData;
};


// Struct holds the data for one Scan chain.
//
class defiScanchain {
public:
  defiScanchain(defrData *data);
  void Init();

  void Destroy();
  ~defiScanchain();

  void setName(const char* name);
  void clear();

  void addOrderedList();
  void addOrderedInst(const char* inst);
  void addOrderedIn(const char* inPin);
  void addOrderedOut(const char* outPin);
  void setOrderedBits(int bits);      // 5.4.1

  void addFloatingInst(const char* inst);
  void addFloatingIn(const char* inPin);
  void addFloatingOut(const char* outPin);
  void setFloatingBits(int bits);     // 5.4.1

  void setStart(const char* inst, const char* pin);
  void setStop(const char* inst, const char* pin);
  void setCommonIn(const char* pin);
  void setCommonOut(const char* pin);
  void setPartition(const char* partName, int maxBits);    // 5.4.1

  const char* name() const;
  int hasStart() const;
  int hasStop() const;
  int hasFloating() const;
  int hasOrdered() const;
  int hasCommonInPin() const;
  int hasCommonOutPin() const;
  int hasPartition() const;           // 5.4.1
  int hasPartitionMaxBits() const;    // 5.4.1

  // If the pin part of these routines were not supplied in the DEF
  // then a NULL pointer will be returned.
  void start(char** inst, char** pin) const;
  void stop(char** inst, char** pin) const;

  // There could be many ORDERED constructs in the DEF.  The data in
  // each ORDERED construct is stored in its own array.  The numOrderedLists()
  // routine tells how many lists there are.
  int numOrderedLists() const;

  // This routine will return an array of instances and
  // an array of in and out pins.
  // The number if things in the arrays is returned in size.
  // The inPin and outPin entry is optional for each instance.
  // If an entry is not given, then that char* is NULL.
  // For example if the second instance has
  // instnam= "FOO" and IN="A", but no OUT given, then inst[1] points
  // to "FOO"  inPin[1] points to "A" and outPin[1] is a NULL pointer.
  void ordered(int index, int* size, char*** inst, char*** inPin,
                                      char*** outPin, int** bits) const;

  // All of the floating constructs in the scan chain are
  // stored in this one array.
  // If the IN or OUT of an entry is not supplied then the array will have
  // a NULL pointer in that place.
  void floating(int* size, char*** inst, char*** inPin, char*** outPin,
                                      int** bits) const;

  const char* commonInPin() const;
  const char* commonOutPin() const;

  const char* partitionName() const;        // 5.4.1
  int partitionMaxBits() const;             // 5.4.1

  void print(FILE* f) const;

protected:
  char* name_;
  char hasStart_;
  char hasStop_;
  int nameLength_;

  int numOrderedAllocated_;
  int numOrdered_;
  defiOrdered** ordered_; 

  int numFloatingAllocated_;
  int numFloating_;
  char** floatInst_;    // Array of floating names
  char** floatIn_;
  char** floatOut_;
  int*   floatBits_;    // 5.4.1

  char* stopInst_;
  char* stopPin_;

  char* startInst_;
  char* startPin_;

  char* commonInPin_;
  char* commonOutPin_;

  char  hasPartition_;  // 5.4.1
  char* partName_;      // 5.4.1
  int   maxBits_;       // 5.4.1

  defrData *defData;
};


END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiSite.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiSite_h
#define defiSite_h

#include "defiKRDefs.hpp"
#include "defiMisc.hpp"
#include <stdio.h>

BEGIN_LEFDEF_PARSER_NAMESPACE

class defrData;

/*
 * Struct holds the data for one site.
 * It is also used for a canplace and cannotoccupy.
 */
class defiSite {
public:
  defiSite(defrData *data);
  void Init();

  ~defiSite();
  void Destroy();

  void clear();

  void setName(const char* name);
  void setLocation(double xorg, double yorg);
  void setOrient(int orient);
  void setDo(double x_num, double y_num, double x_step, double y_step);

  double x_num() const;
  double y_num() const;
  double x_step() const;
  double y_step() const;
  double x_orig() const;
  double y_orig() const;
  int orient() const;
  const char* orientStr() const;
  const char* name() const;

  void print(FILE* f) const;

  void bumpName(int size);

protected:
  char* siteName_;     // Name of this.
  int nameSize_;       // allocated size of siteName_
  double x_orig_, y_orig_;  // Origin
  double x_step_, y_step_;  // Array step size.
  double x_num_, y_num_; 
  int orient_;         // orientation

  defrData *defData;
};



/* Struct holds the data for a Box */
class defiBox {
public:
  // Use the default destructor and constructor.
  // 5.6 changed to use it own constructor & destructor

  defiBox();
  void Init();
  void Destroy();
  ~defiBox();

  // NOTE: 5.6
  // The following methods are still here for backward compatibility
  // For new reader they should use numPoints & getPoint to get the
  // data.
  int xl() const;
  int yl() const;
  int xh() const;
  int yh() const;

  void addPoint(defiGeometries* geom);
  defiPoints getPoint() const;

  void print(FILE* f) const;

protected:
  int xl_, yl_;
  int xh_, yh_;
  defiPoints* points_;    // 5.6
};


END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiSlot.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiSLOT_h
#define defiSLOT_h

#include <stdio.h>
#include "defiKRDefs.hpp"
#include "defiMisc.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE

class defrData;

class defiSlot {
public:
  defiSlot(defrData *data);
  void Init();

  void Destroy();
  ~defiSlot();

  void clear();
  void clearPoly();

  void setLayer(const char* name);
  void addRect(int xl, int yl, int xh, int yh);
  void addPolygon(defiGeometries* geom);

  int hasLayer() const;
  const char* layerName() const;

  int numRectangles() const;
  int xl(int index) const;
  int yl(int index) const;
  int xh(int index) const;
  int yh(int index) const;

  int numPolygons() const;                        // 5.6
  defiPoints getPolygon(int index) const;  // 5.6

  void print(FILE* f) const;

protected:
  int   hasLayer_;
  char* layerName_;
  int   layerNameLength_;
  int   numRectangles_;
  int   rectsAllocated_;
  int*  xl_;
  int*  yl_;
  int*  xh_;
  int*  yh_;
  int   numPolys_;                  // 5.6
  int   polysAllocated_;            // 5.6
  defiPoints** polygons_;    // 5.6

  defrData *defData;
};


END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiTimingDisable.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiTimingDisable_h
#define defiTimingDisable_h

#include <stdio.h>
#include "defiKRDefs.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE

// A Timing disable can be a from-to  or a thru or a macro.
//   A macro is either a fromto macro or a thru macro.
class defrData;


class defiTimingDisable {
public:
  defiTimingDisable(defrData *data);
  void Init();

  void Destroy();
  ~defiTimingDisable();

  void clear();

  void setFromTo(const char* fromInst, const char* fromPin,
		 const char* toInst, const char* toPin);
  void setThru(const char* fromInst, const char* fromPin);
  void setMacro(const char* name);
  void setMacroThru(const char* thru);
  void setMacroFromTo(const char* fromPin, const char* toPin);
  void setReentrantPathsFlag();

  int hasMacroThru() const;
  int hasMacroFromTo() const;
  int hasThru() const;
  int hasFromTo() const;
  int hasReentrantPathsFlag() const;

  const char* fromPin() const;
  const char* toPin() const;
  const char* fromInst() const;
  const char* toInst() const;
  const char* macroName() const;
  const char* thruPin() const;    // Also macro thru
  const char* thruInst() const;

  // debug print
  void print(FILE* f) const;

protected:
  char* fromInst_;  // also macro name and thru inst
  int fromInstLength_;
  char* toInst_;
  int toInstLength_;
  char* fromPin_;  // also macro thru and thru pin
  int fromPinLength_;
  char* toPin_;
  int toPinLength_;

  int hasFromTo_;
  int hasThru_;
  int hasMacro_;
  int hasReentrantPathsFlag_;

  defrData *defData;
};


END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiUser.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

/*
 * User header file for the DEF Interface.  This includes
 * all of the header files which are relevant to both the
 * reader and the writer.
 *
 * defrReader.h and defwWriter.h include this file, so that
 * an application only needs to include either defwReader.h
 * or defwWriter.h.
 */

#ifndef DEFI_USER_H
#define DEFI_USER_H

/* General utilities. */
/* #include "defiMalloc.hpp" */
/* #include "defiUtils.hpp" */

/*
 * API objects
 */
#include "defiDebug.hpp"
#include "defiProp.hpp"
#include "defiSite.hpp"
#include "defiComponent.hpp"
#include "defiNet.hpp"
#include "defiPath.hpp"
#include "defiPinCap.hpp"
#include "defiRowTrack.hpp"
#include "defiVia.hpp"
#include "defiRegion.hpp"
#include "defiGroup.hpp"
#include "defiAssertion.hpp"
#include "defiScanchain.hpp"
#include "defiIOTiming.hpp"
#include "defiFPC.hpp"
#include "defiTimingDisable.hpp"
#include "defiPartition.hpp"
#include "defiPinProp.hpp"
#include "defiBlockage.hpp"
#include "defiSlot.hpp"
#include "defiFill.hpp"
#include "defiNonDefault.hpp"
#include "defiPropType.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE

/* NEW CALLBACK - If you are creating a new .cpp and .hpp file to
 * describe a new class of object in the parser, then add a reference
 * to the .hpp here.
 *
 *  You must also add an entry for the .h and the .hpp in the package_list
 * file of the ../../../release directory. */

END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defiUtil.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiUtil_h
#define defiUtil_h

#include "defiKRDefs.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE

/* Return codes Orient and Rotation */
#define DEF_ORIENT_N  0
#define DEF_ORIENT_W  1
#define DEF_ORIENT_S  2
#define DEF_ORIENT_E  3
#define DEF_ORIENT_FN 4
#define DEF_ORIENT_FW 5
#define DEF_ORIENT_FS 6
#define DEF_ORIENT_FE 7

const char* defiOrientStr(int orient);

END_LEFDEF_PARSER_NAMESPACE

#endif



================================================
FILE: rsyn/include/def5.8/defiVia.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef defiVia_h
#define defiVia_h

#include "defiKRDefs.hpp"
#include <stdio.h>
#include "defiMisc.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE

class defrData;

// Struct holds the data for one property.
class defiVia {
public:
  defiVia(defrData *data);
  void Init();

  void clear();
  void Destroy();
  ~defiVia();

  void setup(const char* name);
  void addPattern(const char* patt);
  void addLayer(const char* layer, int xl, int yl, int xh, int yh, int colorMask = 0);
  // 5.6
  void addPolygon(const char* layer, defiGeometries* geom, int colorMask = 0);
  void addViaRule(char* viaRuleName, int xSize, int ySize, char* botLayer,
                  char* cutLayer, char* topLayer, int xSpacing, int ySpacing,
                  int xBotEnc, int yBotEnc, int xTopEnc, int yTopEnc);
  void addRowCol(int numCutRows, int numCutCols);
  void addOrigin(int xOffset, int yOffset);
  void addOffset(int xBotOs, int yBotOs, int xTopOs, int yTopOs);
  void addCutPattern(char* cutPattern);
  
  const char* name() const;
  const char* pattern() const;
  int hasPattern() const;
  int numLayers() const;
  void layer(int index, char** layer, int* xl, int* yl, int* xh, int* yh) const;
  int numPolygons() const;                        // 5.6
  const char* polygonName(int index) const;       // 5.6
  defiPoints getPolygon(int index) const;  // 5.6
  int hasViaRule() const;
  void viaRule(char** viaRuleName, int* xSize, int* ySize, char** botLayer,
               char** cutLayer, char** topLayer, int* xCutSpacing,
               int* yCutSpacing, int* xBotEnc, int* yBotEnc, int* xTopEnc,
               int* yTopEnc) const;
  int hasRowCol() const;
  void rowCol(int* numCutRows, int* numCutCols) const;
  int hasOrigin() const;
  void origin(int* xOffset, int* yOffset) const;
  int hasOffset() const;
  void offset(int* xBotOffset, int* yBotOffset, int* xTopOffset,
              int* yTopOffset) const;
  int hasCutPattern() const;
  const char* cutPattern() const;
  int hasRectMask(int index) const;
  int rectMask(int index) const;
  int hasPolyMask(int index) const;
  int polyMask(int index) const;

  void print(FILE* f) const;

protected:
  char* name_;
  int nameLength_;
  char* pattern_;
  int patternLength_;
  char** layers_;
  int hasPattern_;
  int* xl_;
  int* yl_;
  int* xh_;
  int* yh_;
  int layersLength_;
  int numLayers_;
  int numPolys_;            // 5.6
  char** polygonNames_;     // 5.6 layerName for POLYGON
  int polysAllocated_;      // 5.6
  defiPoints** polygons_; // 5.6
  char* viaRule_;           // 5.6
  int   viaRuleLength_;     // 5.6
  int   hasViaRule_;        // 5.6
  int xSize_;               // 5.6
  int ySize_;               // 5.6
  char* botLayer_;          // 5.6
  char* cutLayer_;          // 5.6
  char* topLayer_;          // 5.6
  int   botLayerLength_;    // 5.6
  int   cutLayerLength_;    // 5.6
  int   topLayerLength_;    // 5.6
  int   xCutSpacing_;       // 5.6
  int   yCutSpacing_;       // 5.6
  int   xBotEnc_;           // 5.6
  int   yBotEnc_;           // 5.6
  int   xTopEnc_;           // 5.6
  int   yTopEnc_;           // 5.6
  int   rows_;              // 5.6
  int   cols_;              // 5.6
  int   xOffset_;           // 5.6
  int   yOffset_;           // 5.6
  int   xBotOffset_;        // 5.6
  int   yBotOffset_;        // 5.6
  int   xTopOffset_;        // 5.6
  int   yTopOffset_;        // 5.6
  char* cutPattern_;        // 5.6
  int   cutPatternLength_;  // 5.6
  int   hasCutPattern_;     // 5.6
  int*  rectMask_;          // 5.8
  int*  polyMask_;          // 5.8
  
  defrData *defData;
};


END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defrCallBacks.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef DEFRCALLBACKS_H
#define DEFRCALLBACKS_H 1

#include "defiKRDefs.hpp"

#include "defrReader.hpp"

#include "defrReader.hpp"

BEGIN_LEFDEF_PARSER_NAMESPACE

class defrCallbacks {
public:
    defrCallbacks();

    void SetUnusedCallbacks(defrVoidCbkFnType f);

    defrStringCbkFnType DesignCbk;
    defrStringCbkFnType TechnologyCbk;
    defrVoidCbkFnType DesignEndCbk;
    defrPropCbkFnType PropCbk;
    defrVoidCbkFnType PropDefEndCbk;
    defrVoidCbkFnType PropDefStartCbk;
    defrStringCbkFnType ArrayNameCbk;
    defrStringCbkFnType FloorPlanNameCbk;
    defrDoubleCbkFnType UnitsCbk;
    defrStringCbkFnType DividerCbk;
    defrStringCbkFnType BusBitCbk;
    defrSiteCbkFnType SiteCbk;
    defrSiteCbkFnType CanplaceCbk;
    defrSiteCbkFnType CannotOccupyCbk;
    defrIntegerCbkFnType ComponentStartCbk;
    defrVoidCbkFnType ComponentEndCbk;
    defrComponentCbkFnType ComponentCbk;
    defrComponentMaskShiftLayerCbkFnType ComponentMaskShiftLayerCbk;
    defrIntegerCbkFnType NetStartCbk;
    defrVoidCbkFnType NetEndCbk;
    defrNetCbkFnType NetCbk;
    defrStringCbkFnType NetNameCbk;
    defrStringCbkFnType NetSubnetNameCbk;
    defrStringCbkFnType NetNonDefaultRuleCbk;
    defrNetCbkFnType NetPartialPathCbk;
    defrPathCbkFnType PathCbk;
    defrDoubleCbkFnType VersionCbk;
    defrStringCbkFnType VersionStrCbk;
    defrStringCbkFnType PinExtCbk;
    defrStringCbkFnType ComponentExtCbk;
    defrStringCbkFnType ViaExtCbk;
    defrStringCbkFnType NetConnectionExtCbk;
    defrStringCbkFnType NetExtCbk;
    defrStringCbkFnType GroupExtCbk;
    defrStringCbkFnType ScanChainExtCbk;
    defrStringCbkFnType IoTimingsExtCbk;
    defrStringCbkFnType PartitionsExtCbk;
    defrStringCbkFnType HistoryCbk;
    defrBoxCbkFnType DieAreaCbk;
    defrPinCapCbkFnType PinCapCbk;
    defrPinCbkFnType PinCbk;
    defrIntegerCbkFnType StartPinsCbk;
    defrVoidCbkFnType PinEndCbk;
    defrIntegerCbkFnType DefaultCapCbk;
    defrRowCbkFnType RowCbk;
    defrTrackCbkFnType TrackCbk;
    defrGcellGridCbkFnType GcellGridCbk;
    defrIntegerCbkFnType ViaStartCbk;
    defrVoidCbkFnType ViaEndCbk;
    defrViaCbkFnType ViaCbk;
    defrIntegerCbkFnType RegionStartCbk;
    defrVoidCbkFnType RegionEndCbk;
    defrRegionCbkFnType RegionCbk;
    defrIntegerCbkFnType SNetStartCbk;
    defrVoidCbkFnType SNetEndCbk;
    defrNetCbkFnType SNetCbk;
    defrNetCbkFnType SNetPartialPathCbk;
    defrNetCbkFnType SNetWireCbk;
    defrIntegerCbkFnType GroupsStartCbk;
    defrVoidCbkFnType GroupsEndCbk;
    defrStringCbkFnType GroupNameCbk;
    defrStringCbkFnType GroupMemberCbk;
    defrGroupCbkFnType GroupCbk;
    defrIntegerCbkFnType AssertionsStartCbk;
    defrVoidCbkFnType AssertionsEndCbk;
    defrAssertionCbkFnType AssertionCbk;
    defrIntegerCbkFnType ConstraintsStartCbk;
    defrVoidCbkFnType ConstraintsEndCbk;
    defrAssertionCbkFnType ConstraintCbk;
    defrIntegerCbkFnType ScanchainsStartCbk;
    defrVoidCbkFnType ScanchainsEndCbk;
    defrScanchainCbkFnType ScanchainCbk;
    defrIntegerCbkFnType IOTimingsStartCbk;
    defrVoidCbkFnType IOTimingsEndCbk;
    defrIOTimingCbkFnType IOTimingCbk;
    defrIntegerCbkFnType FPCStartCbk;
    defrVoidCbkFnType FPCEndCbk;
    defrFPCCbkFnType FPCCbk;
    defrIntegerCbkFnType TimingDisablesStartCbk;
    defrVoidCbkFnType TimingDisablesEndCbk;
    defrTimingDisableCbkFnType TimingDisableCbk;
    defrIntegerCbkFnType PartitionsStartCbk;
    defrVoidCbkFnType PartitionsEndCbk;
    defrPartitionCbkFnType PartitionCbk;
    defrIntegerCbkFnType PinPropStartCbk;
    defrVoidCbkFnType PinPropEndCbk;
    defrPinPropCbkFnType PinPropCbk;
    defrIntegerCbkFnType CaseSensitiveCbk;
    defrIntegerCbkFnType BlockageStartCbk;
    defrVoidCbkFnType BlockageEndCbk;
    defrBlockageCbkFnType BlockageCbk;
    defrIntegerCbkFnType SlotStartCbk;
    defrVoidCbkFnType SlotEndCbk;
    defrSlotCbkFnType SlotCbk;
    defrIntegerCbkFnType FillStartCbk;
    defrVoidCbkFnType FillEndCbk;
    defrFillCbkFnType FillCbk;
    defrIntegerCbkFnType NonDefaultStartCbk;
    defrVoidCbkFnType NonDefaultEndCbk;
    defrNonDefaultCbkFnType NonDefaultCbk;
    defrIntegerCbkFnType StylesStartCbk;
    defrVoidCbkFnType StylesEndCbk;
    defrStylesCbkFnType StylesCbk;
    defrStringCbkFnType ExtensionCbk;


};

END_LEFDEF_PARSER_NAMESPACE

USE_LEFDEF_PARSER_NAMESPACE

#endif


================================================
FILE: rsyn/include/def5.8/defrData.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013 - 2015, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: arakhman $
//  $Revision: #6 $
//  $Date: 2013/08/09 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#include <cstring>
#include <string>
#include <map>
#include <vector>

#include "defrReader.hpp"
#include "defrCallBacks.hpp"
#include "defrSettings.hpp"

#ifndef defrData_h
#define defrData_h

#define CURRENT_VERSION 5.8
#define RING_SIZE 10
#define IN_BUF_SIZE 16384
#define TOKEN_SIZE 4096
#define MSG_SIZE 100


BEGIN_LEFDEF_PARSER_NAMESPACE

struct defCompareStrings 
{
    bool operator()(const std::string &lhs, const std::string &rhs) const {
        return std::strcmp(lhs.c_str(), rhs.c_str()) < 0;
    }
};

typedef std::map<std::string, std::string, defCompareStrings> defAliasMap;
typedef std::map<std::string, std::string, defCompareStrings> defDefineMap;

typedef union {
        double dval ;
        int    integer ;
        char * string ;
        int    keyword ;  // really just a nop 
        struct defpoint pt;
        defTOKEN *tk;
} YYSTYPE;

#define YYSTYPE_IS_DECLARED

class defrData {

public:
    defrData(const defrCallbacks *pCallbacks,
             const defrSettings  *pSettings,
             defrSession         *pSession);
    ~defrData();

    inline int          defGetKeyword(const char* name, int *result);
    inline int          defGetAlias(const std::string &name, std::string &result);
    inline int          defGetDefine(const std::string &name, std::string &result);
    void                reload_buffer(); 
    int                 GETC();

    void                UNGETC(char ch);
    char*               ringCopy(const char* string);
    int                 DefGetTokenFromStack(char *s);
    inline void         print_lines(long long lines);
    const char *        lines2str(long long lines);
    static inline void  IncCurPos(char **curPos, char **buffer, int *bufferSize);
    int                 DefGetToken(char **buffer, int *bufferSize);
    static void         uc_array(char *source, char *dest);
    void                StoreAlias();
    int                 defyylex(YYSTYPE *pYylval);
    int                 sublex(YYSTYPE *pYylval);
    int                 amper_lookup(YYSTYPE *pYylval, char *tkn);
    void                defError(int msgNum, const char *s);
    void                defyyerror(const char *s);
    void                defInfo(int msgNum, const char *s);
    void                defWarning(int msgNum, const char *s);

    void                defiError(int check, int msgNum, const char* mess);
    const char          *DEFCASE(const char* ch);
    void                pathIsDone(int shield, int reset, int netOsnet, int *needCbk);
    const char          *upperCase(const char* str);

    inline int          checkErrors();
    int                 validateMaskInput(int input, int warningIndex, int getWarningsIndex);
    int                 validateMaskShiftInput(const char* shiftMask, int warningIndex, int getWarningsIndex);

    static double       convert_defname2num(char *versionName);

    static int          numIsInt (char* volt);
    int                 defValidNum(int values);

    inline static const char   *defkywd(int num);

    FILE*  defrLog; 
    char   defPropDefType; // save the current type of the property
    char*  ch; 
    char*  defMsg; 
    char*  deftoken; 
    char*  uc_token;
    char*  last; 
    char*  magic; 
    char*  next; 
    char*  pv_deftoken; 
    char*  rowName; // to hold the rowName for message
    char*  shieldName; // to hold the shieldNetName
    char*  shiftBuf; 
    char*  warningMsg; 
    double save_x; 
    double save_y; 
    double lVal;
    double rVal;
    int  aOxide; // keep track for oxide
    int  assertionWarnings; 
    int  bit_is_keyword; 
    int  bitsNum; // Scanchain Bits value
    int  blockageWarnings; 
    int  by_is_keyword; 
    int  caseSensitiveWarnings; 
    int  componentWarnings; 
    int  constraintWarnings; 
    int  cover_is_keyword; 
    int  defIgnoreVersion; // ignore checking version number
    int  defInvalidChar; 
    int  defMsgCnt; 
    int  defMsgPrinted; // number of msgs output so far
    int  defPrintTokens; 
    int  defRetVal; 
    int  def_warnings; 
    int  defaultCapWarnings; 
    int  do_is_keyword; 
    int  dumb_mode; 
    int  errors; 
    int  fillWarnings; 
    int  first_buffer; 
    int  fixed_is_keyword; 
    int  gcellGridWarnings; 
    int  hasBlkLayerComp; // only 1 BLOCKAGE/LAYER/COMP
    int  hasBlkLayerSpac; // only 1 BLOCKAGE/LAYER/SPACING
    int  hasBlkLayerTypeComp; // SLOTS or FILLS
    int  hasBlkPlaceComp; // only 1 BLOCKAGE/PLACEMENT/COMP
    int  hasBlkPlaceTypeComp; // SOFT or PARTIAL
    int  hasBusBit; // keep track BUSBITCHARS is in the file
    int  hasDes; // keep track DESIGN is in the file
    int  hasDivChar; // keep track DIVIDERCHAR is in the file
    int  hasDoStep; 
    int  hasNameCase; // keep track NAMESCASESENSITIVE is in the file
    int  hasOpenedDefLogFile; 
    int  hasPort; // keep track is port defined in a Pin
    int  hasVer; // keep track VERSION is in the file
    int  hasFatalError; // don't report errors after the file end.
    int  iOTimingWarnings; 
    int  input_level; 
    int  mask_is_keyword; 
    int  mustjoin_is_keyword; 
    int  names_case_sensitive; // always true in 5.6
    int  needNPCbk; // if cbk for net path is needed
    int  needSNPCbk; // if cbk for snet path is needed
    int  netOsnet; // net = 1 & snet = 2
    int  netWarnings; 
    int  new_is_keyword; 
    int  nl_token; 
    int  no_num; 
    int  nonDefaultWarnings; 
    int  nondef_is_keyword; 
    int  ntokens; 
    int  orient_is_keyword; 
    int  pinExtWarnings; 
    int  pinWarnings; 
    int  real_num; 
    int  rect_is_keyword; 
    int  regTypeDef; // keep track that region type is defined 
    int  regionWarnings; 
    int  ringPlace; 
    int  routed_is_keyword; 
    int  rowWarnings; 
    int  sNetWarnings; 
    int  scanchainWarnings; 
    int  shield; // To identify if the path is shield for 5.3
    int  shiftBufLength; 
    int  specialWire_mask; 
    int  step_is_keyword; 
    int  stylesWarnings; 
    int  trackWarnings; 
    int  unitsWarnings; 
    int  versionWarnings; 
    int  viaRule; // keep track the viarule has called first
    int  viaWarnings; 
    int  virtual_is_keyword; 
    int  deftokenLength;
    long long nlines;

    std::vector<char>  History_text; 
    defAliasMap        def_alias_set; 
    defDefineMap       def_defines_set;

    char*  specialWire_routeStatus;
    char*  specialWire_routeStatusName;
    char*  specialWire_shapeType;
    double VersionNum;
    double xStep;
    double yStep;
        
    //defrParser vars.
    defiPath PathObj;
    defiProp Prop;
    defiSite Site;
    defiComponent Component;
    defiComponentMaskShiftLayer ComponentMaskShiftLayer;
    defiNet Net;
    defiPinCap PinCap;
    defiSite CannotOccupy;
    defiSite Canplace;
    defiBox DieArea;
    defiPin Pin;
    defiRow Row;
    defiTrack Track;
    defiGcellGrid GcellGrid;
    defiVia Via;
    defiRegion Region;
    defiGroup Group;
    defiAssertion Assertion;
    defiScanchain Scanchain;
    defiIOTiming IOTiming;
    defiFPC FPC;
    defiTimingDisable TimingDisable;
    defiPartition Partition;
    defiPinProp PinProp;
    defiBlockage Blockage;
    defiSlot Slot;
    defiFill Fill;
    defiNonDefault NonDefault;
    defiStyles Styles;
    defiGeometries Geometries;
    int doneDesign;      // keep track if the Design is done parsing
    
    // Flags to control what happens
    int NeedPathData;

    defiSubnet* Subnet;
    int msgLimit[DEF_MSGS];
    char buffer[IN_BUF_SIZE];
    char* ring[RING_SIZE];
    int ringSizes[RING_SIZE];
    std::string stack[20];  /* the stack itself */

    YYSTYPE yylval;
    const defrCallbacks *callbacks;
    const defrSettings  *settings;
    defrSession         *session;
    char                lineBuffer[MSG_SIZE];

    FILE* File;
};

class defrContext {
public:
    defrContext(int ownConf = 0);

    defrSettings          *settings;
    defrCallbacks         *callbacks;
    defrSession           *session;
    defrData              *data;
    int                   ownConfig;
    const char            *init_call_func;
};

int 
defrData::checkErrors()
{
    if (errors > 20) {
        defError(6011, "Too many syntax errors have been reported."); 
        errors = 0; 
        return 1; 
    }

    return 0;
}

END_LEFDEF_PARSER_NAMESPACE

#endif



================================================
FILE: rsyn/include/def5.8/defrReader.hpp
================================================
// *****************************************************************************
// *****************************************************************************
// Copyright 2013-2016, Cadence Design Systems
// 
// This  file  is  part  of  the  Cadence  LEF/DEF  Open   Source
// Distribution,  Product Version 5.8. 
// 
// Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
// 
//        http://www.apache.org/licenses/LICENSE-2.0
// 
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
//    implied. See the License for the specific language governing
//    permissions and limitations under the License.
// 
// For updates, support, or to become part of the LEF/DEF Community,
// check www.openeda.org for details.
// 
//  $Author: dell $
//  $Revision: #1 $
//  $Date: 2017/06/06 $
//  $State:  $
// *****************************************************************************
// *****************************************************************************

#ifndef DEFRREADER_H
#define DEFRREADER_H

#include <stdarg.h>

#include "defiKRDefs.hpp"
#include "defiDefs.hpp"
#include "defiUser.hpp"

#define DEF_MSGS 4013
#define CBMAX 150    // Number of callbacks.

BEGIN_LEFDEF_PARSER_NAMESPACE

// An enum describing all of the types of reader callbacks.
typedef enum {
  defrUnspecifiedCbkType = 0,
  defrDesignStartCbkType,
  defrTechNameCbkType,
  defrPropCbkType,
  defrPropDefEndCbkType,
  defrPropDefStartCbkType,
  defrFloorPlanNameCbkType,
  defrArrayNameCbkType,
  defrUnitsCbkType,
  defrDividerCbkType,
  defrBusBitCbkType,
  defrSiteCbkType,
  defrComponentStartCbkType,
  defrComponentCbkType,
  defrComponentEndCbkType,
  defrNetStartCbkType,
  defrNetCbkType,
  defrNetNameCbkType,
  defrNetNonDefaultRuleCbkType,
  defrNetSubnetNameCbkType,
  defrNetEndCbkType,
  defrPathCbkType,
  defrVersionCbkType,
  defrVersionStrCbkType,
  defrComponentExtCbkType,
  defrPinExtCbkType,
  defrViaExtCbkType,
  defrNetConnectionExtCbkType,
  defrNetExtCbkType,
  defrGroupExtCbkType,
  defrScanChainExtCbkType,
  defrIoTimingsExtCbkType,
  defrPartitionsExtCbkType,
  defrHistoryCbkType,
  defrDieAreaCbkType,
  defrCanplaceCbkType,
  defrCannotOccupyCbkType,
  defrPinCapCbkType,
  defrDefaultCapCbkType,
  defrStartPinsCbkType,
  defrPinCbkType,
  defrPinEndCbkType,
  defrRowCbkType,
  defrTrackCbkType,
  defrGcellGridCbkType,
  defrViaStartCbkType,
  defrViaCbkType,
  defrViaEndCbkType,
  defrRegionStartCbkType,
  defrRegionCbkType,
  defrRegionEndCbkType,
  defrSNetStartCbkType,
  defrSNetCbkType,
  defrSNetPartialPathCbkType,
  defrSNetWireCbkType,
  defrSNetEndCbkType,
  defrGroupsStartCbkType,
  defrGroupNameCbkType,
  defrGroupMemberCbkType,
  defrGroupCbkType,
  defrGroupsEndCbkType,
  defrAssertionsStartCbkType,
  defrAssertionCbkType,
  defrAssertionsEndCbkType,
  defrConstraintsStartCbkType,
  defrConstraintCbkType,
  defrConstraintsEndCbkType,
  defrScanchainsStartCbkType,
  defrScanchainCbkType,
  defrScanchainsEndCbkType,
  defrIOTimingsStartCbkType,
  defrIOTimingCbkType,
  defrIOTimingsEndCbkType,
  defrFPCStartCbkType,
  defrFPCCbkType,
  defrFPCEndCbkType,
  defrTimingDisablesStartCbkType,
  defrTimingDisableCbkType,
  defrTimingDisablesEndCbkType,
  defrPartitionsStartCbkType,
  defrPartitionCbkType,
  defrPartitionsEndCbkType,
  defrPinPropStartCbkType,
  defrPinPropCbkType,
  defrPinPropEndCbkType,
  defrBlockageStartCbkType,
  defrBlockageCbkType,
  defrBlockageEndCbkType,
  defrSlotStartCbkType,
  defrSlotCbkType,
  defrSlotEndCbkType,
  defrFillStartCbkType,
  defrFillCbkType,
  defrFillEndCbkType,
  defrCaseSensitiveCbkType,
  defrNonDefaultStartCbkType,
  defrNonDefaultCbkType,
  defrNonDefaultEndCbkType,
  defrStylesStartCbkType,
  defrStylesCbkType,
  defrStylesEndCbkType,
  defrExtensionCbkType,

  // NEW CALLBACK - If you are creating a new callback, you must add
  // a unique item to this enum for each callback routine. When the
  // callback is called in def.y you have to supply this enum item
  // as an argument in the call.

  defrComponentMaskShiftLayerCbkType,
  defrDesignEndCbkType
} defrCallbackType_e;
 
 
// Declarations of function signatures for each type of callback.
// These declarations are type-safe when compiling with ANSI C
// or C++; you will only be able to register a function pointer
// with the correct signature for a given type of callback.
//
// Each callback function is expected to return 0 if successful.
// A non-zero return code will cause the reader to abort.
//
// The defrDesignStart and defrDesignEnd callback is only called once.
// Other callbacks may be called multiple times, each time with a different
// set of data.
//
// For each callback, the Def API will make the callback to the
// function supplied by the client, which should either make a copy
// of the Def object, or store the data in the client's own data structures.
// The Def API will delete or reuse each object after making the callback,
// so the client should not keep a pointer to it.
//
// All callbacks pass the user data pointer provided in defrRead()
// or defrSetUserData() back to the client; this can be used by the
// client to obtain access to the rest of the client's data structures.
//
// The user data pointer is obtained using defrGetUserData() immediately
// prior to making each callback, so the client is free to change the
// user data on the fly if necessary.
//
// Callbacks with the same signature are passed a callback type
// parameter, which allows an application to write a single callback
// function, register that function for multiple callbacks, then
// switch based on the callback type to handle the appropriate type of
// data.
 

// A declaration of the signature of all callbacks that return nothing.     
typedef int (*defrVoidCbkFnType) (defrCallbackType_e, void* v, defiUserData);

// A declaration of the signature of all callbacks that return a string.     
typedef int (*defrStringCbkFnType) (defrCallbackType_e, const char *string, defiUserData);
 
// A declaration of the signature of all callbacks that return a integer.     
typedef int (*defrIntegerCbkFnType) (defrCallbackType_e, int number, defiUserData);
 
// A declaration of the signature of all callbacks that return a double.     
typedef int (*defrDoubleCbkFnType) (defrCallbackType_e, double number, defiUserData);
 
// A declaration of the signature of all callbacks that return a defiProp.     
typedef int (*defrPropCbkFnType) (defrCallbackType_e, defiProp *prop, defiUserData);
 
// A declaration of the signature of all callbacks that return a defiSite.     
typedef int (*defrSiteCbkFnType) (defrCallbackType_e, defiSite *site, defiUserData);
 
// A declaration of the signature of all callbacks that return a defComponent.     
typedef int (*defrComponentCbkFnType) (defrCallbackType_e, defiComponent *comp, defiUserData);

// A declaration of the signature of all callbacks that return a defComponentMaskShiftLayer.     
typedef int (*defrComponentMaskShiftLayerCbkFnType) (defrCallbackType_e, defiComponentMaskShiftLayer *comp, defiUserData);
 
// A declaration of the signature of all callbacks that return a defNet.     
typedef int (*defrNetCbkFnType) (defrCallbackType_e, defiNet *net, defiUserData);

// A declaration of the signature of all callbacks that return a defPath.     
typedef int (*defrPathCbkFnType) (defrCallbackType_e, defiPath *path, defiUserData);
 
// A declaration of the signature of all callbacks that return a defiBox.     
typedef int (*defrBoxCbkFnType) (defrCallbackType_e, defiBox *box, defiUserData);
 

// A declaration of the signature of all callbacks that return a defiPinCap.     
typedef int (*defrPinCapCbkFnType) (defrCallbackType_e, defiPinCap *pincap, defiUserData);
 

// A declaration of the signature of all callbacks that return a defiPin.     
typedef int (*defrPinCbkFnType) (defrCallbackType_e, defiPin *pin, defiUserData);
 

// A declaration of the signature of all callbacks that return a defiRow.     
typedef int (*defrRowCbkFnType) (defrCallbackType_e, defiRow *row, defiUserData);
 

// A declaration of the signature of all callbacks that return a defiTrack.     
typedef int (*defrTrackCbkFnType) (defrCallbackType_e, defiTrack *track, defiUserData);
 

// A declaration of the signature of all callbacks that return a defiGcellGrid.     
typedef int (*defrGcellGridCbkFnType) (defrCallbackType_e, defiGcellGrid *grid, defiUserData);
 

// A declaration of the signature of all callbacks that return a defiVia.     
typedef int (*defrViaCbkFnType) (defrCallbackType_e, defiVia *, defiUserData);
 

// A declaration of the signature of all callbacks that return a defiRegion.     
typedef int (*defrRegionCbkFnType) (defrCallbackType_e, defiRegion *, defiUserData);
 

// A declaration of the signature of all callbacks that return a defiGroup.     
typedef int (*defrGroupCbkFnType) (defrCallbackType_e, defiGroup *, defiUserData);
 

// A declaration of the signature of all callbacks that return a defiAssertion. 
typedef int (*defrAssertionCbkFnType) (defrCallbackType_e, defiAssertion *, defiUserData);
 

// A declaration of the signature of all callbacks that return a defiScanChain. 
typedef int (*defrScanchainCbkFnType) (defrCallbackType_e, defiScanchain *, defiUserData);
 

// A declaration of the signature of all callbacks that return a defiIOTiming. 
typedef int (*defrIOTimingCbkFnType) (defrCallbackType_e, defiIOTiming *, defiUserData);
 

// A declaration of the signature of all callbacks that return a defiFPC. 
typedef int (*defrFPCCbkFnType) (defrCallbackType_e, defiFPC *, defiUserData);
 

// A declaration of the signature of all callbacks that return a defiTimingDisable. 
typedef int (*defrTimingDisableCbkFnType) (defrCallbackType_e, defiTimingDisable *, defiUserData);
 

// A declaration of the signature of all callbacks that return a defiPartition. 
typedef int (*defrPartitionCbkFnType) (defrCallbackType_e, defiPartition *, defiUserData);
 
// A declaration of the signature of all callbacks that return a defiPinProp. 
typedef int (*defrPinPropCbkFnType) (defrCallbackType_e, defiPinProp *, defiUserData);

// A declaration of the signature of all callbacks that return a defiBlockage. 
typedef int (*defrBlockageCbkFnType) (defrCallbackType_e, defiBlockage *, defiUserData);

// A declaration of the signature of all callbacks that return a defiSlot. 
typedef int (*defrSlotCbkFnType) (defrCallbackType_e, defiSlot *, defiUserData);

// A declaration of the signature of all callbacks that return a defiFill. 
typedef int (*defrFillCbkFnType) (defrCallbackType_e, defiFill *, defiUserData);

// A declaration of the signature of all callbacks that return a defiNonDefault.
typedef int (*defrNonDefaultCbkFnType) (defrCallbackType_e, defiNonDefault *, defiUserData);

// A declaration of the signature of all callbacks that return a defiStyles. 
typedef int (*defrStylesCbkFnType) (defrCallbackType_e, defiStyles *, defiUserData);

// NEW CALLBACK - Each callback must return user data, enum, and
//   OUR-DATA item.  We must define a callback function type for
//   each type of OUR-DATA.  Some routines return a string, some
//   return an integer, and some return a pointer to a class.
//   If you create a new class, then you must create a new function
//   type here to return that class to the user. 

// The reader initialization.  Must be called before defrRead().
extern int defrInit ();
extern int defrInitSession (int startSession = 1);

// obsoleted now.
extern int defrReset ();

//Sets all parser memory into init state.
extern int defrClear();

// Change the comment character in the DEF file.  The default
// is '#' 
extern void defrSetCommentChar (char c);

// Functions to call to set specific actions in the parser.
extern void defrSetAddPathToNet ();
extern void defrSetAllowComponentNets ();
extern int defrGetAllowComponentNets ();
extern void defrSetCaseSensitivity (int caseSense);

// Functions to keep track of callbacks that the user did not
// supply.  Normally all parts of the DEF file that the user
// does not supply a callback for will be ignored.  These
// routines tell the parser count the DEF constructs that are
// present in the input file, but did not trigger a callback.
// This should help you find any "important" DEF constructs that
// you are ignoring.
extern void defrSetRegisterUnusedCallbacks ();
extern void defrPrintUnusedCallbacks (FILE* log);
// Obsoleted now.
extern int  defrReleaseNResetMemory ();

// This function clear session data.
extern void defrClearSession();

// The main reader function.
// The file should already be opened.  This requirement allows
// the reader to be used with stdin or a pipe.  The file name
// is only used for error messages.
extern int defrRead (FILE *file,
                    const char *fileName,
                    defiUserData userData,
                    int case_sensitive);

// Set/get the client-provided user data.  defi doesn't look at
// this data at all, it simply passes the opaque defiUserData pointer
// back to the application with each callback.  The client can
// change the data at any time, and it will take effect on the
// next callback.  The defi reader and writer maintain separate
// user data pointers.
extern void defrSetUserData (defiUserData);
extern defiUserData defrGetUserData ();

 
// Functions to call to register a callback function or get the function
//pointer after it has been registered.
//

// Register one function for all callbacks with the same signature 
extern void defrSetArrayNameCbk (defrStringCbkFnType);
extern void defrSetAssertionCbk (defrAssertionCbkFnType);
extern void defrSetAssertionsStartCbk (defrIntegerCbkFnType);
extern void defrSetAssertionsEndCbk (defrVoidCbkFnType);
extern void defrSetBlockageCbk (defrBlockageCbkFnType);
extern void defrSetBlockageStartCbk (defrIntegerCbkFnType);
extern void defrSetBlockageEndCbk (defrVoidCbkFnType);
extern void defrSetBusBitCbk (defrStringCbkFnType);
extern void defrSetCannotOccupyCbk (defrSiteCbkFnType);
extern void defrSetCanplaceCbk (defrSiteCbkFnType);
extern void defrSetCaseSensitiveCbk (defrIntegerCbkFnType);
extern void defrSetComponentCbk (defrComponentCbkFnType);
extern void defrSetComponentExtCbk (defrStringCbkFnType);
extern void defrSetComponentStartCbk (defrIntegerCbkFnType);
extern void defrSetComponentEndCbk (defrVoidCbkFnType);
extern void defrSetConstraintCbk (defrAssertionCbkFnType);
extern void defrSetConstraintsStartCbk (defrIntegerCbkFnType);
extern void defrSetConstraintsEndCbk (defrVoidCbkFnType);
extern void defrSetDefaultCapCbk (defrIntegerCbkFnType);
extern void defrSetDesignCbk (defrStringCbkFnType);
extern void defrSetDesignEndCbk (defrVoidCbkFnType);
extern void defrSetDieAreaCbk (defrBoxCbkFnType);
extern void defrSetDividerCbk (defrStringCbkFnType);
extern void defrSetExtensionCbk (defrStringCbkFnType);
extern void defrSetFillCbk (defrFillCbkFnType);
extern void defrSetFillStartCbk (defrIntegerCbkFnType);
extern void defrSetFillEndCbk (defrVoidCbkFnType);
extern void defrSetFPCCbk (defrFPCCbkFnType);
extern void defrSetFPCStartCbk (defrIntegerCbkFnType);
extern void defrSetFPCEndCbk (defrVoidCbkFnType);
extern void defrSetFloorPlanNameCbk (defrStringCbkFnType);
extern void defrSetGcellGridCbk (defrGcellGridCbkFnType);
extern void defrSetGroupNameCbk (defrStringCbkFnType);
extern void defrSetGroupMemberCbk (defrStringCbkFnType);
extern void defrSetComponentMaskShiftLayerCbk (defrComponentMaskShiftLayerCbkFnType);
extern void defrSetGroupCbk (defrGroupCbkFnType);
extern void defrSetGroupExtCbk (defrStringCbkFnType);
extern void defrSetGroupsStartCbk (defrIntegerCbkFnType);
extern void defrSetGroupsEndCbk (defrVoidCbkFnType);
extern void defrSetHistoryCbk (defrStringCbkFnType);
extern void defrSetIOTimingCbk (defrIOTimingCbkFnType);
extern void defrSetIOTimingsStartCbk (defrIntegerCbkFnType);
extern void defrSetIOTimingsEndCbk (defrVoidCbkFnType);
extern void defrSetIoTimingsExtCbk (defrStringCbkFnType);
extern void defrSetNetCbk (defrNetCbkFnType);
extern void defrSetNetNameCbk (defrStringCbkFnType);
extern void defrSetNetNonDefaultRuleCbk (defrStringCbkFnType);
extern void defrSetNetConnectionExtCbk (defrStringCbkFnType);
extern void defrSetNetExtCbk (defrStringCbkFnType);
extern void defrSetNetPartialPathCbk (defrNetCbkFnType);
extern void defrSetNetSubnetNameCbk (defrStringCbkFnType);
extern void defrSetNetStartCbk (defrIntegerCbkFnType);
extern void defrSetNetEndCbk (defrVoidCbkFnType);
extern void defrSetNonDefaultCbk (defrNonDefaultCbkFnType);
extern void defrSetNonDefaultStartCbk (defrIntegerCbkFnType);
extern void defrSetNonDefaultEndCbk (defrVoidCbkFnType);
extern void defrSetPartitionCbk (defrPartitionCbkFnType);
extern void defrSetPartitionsExtCbk (defrStringCbkFnType);
extern void defrSe
Download .txt
gitextract_gkk6unka/

├── .gitignore
├── LICENSE
├── README.md
├── drcu
├── ispd18eval/
│   ├── README
│   ├── ispd18eval.sh
│   ├── ispd18eval.tcl
│   ├── ispd18eval.w
│   └── ispd18eval_bin
├── ispd19eval/
│   ├── README
│   ├── ispd19eval.sh
│   ├── ispd19eval.tcl
│   ├── ispd19eval.w
│   └── ispd19eval_bin
├── rsyn/
│   ├── .gitrepo
│   ├── LICENSE
│   ├── README.md
│   ├── include/
│   │   ├── def5.8/
│   │   │   ├── defiAlias.hpp
│   │   │   ├── defiAssertion.hpp
│   │   │   ├── defiBlockage.hpp
│   │   │   ├── defiComponent.hpp
│   │   │   ├── defiDebug.hpp
│   │   │   ├── defiDefs.hpp
│   │   │   ├── defiFPC.hpp
│   │   │   ├── defiFill.hpp
│   │   │   ├── defiGroup.hpp
│   │   │   ├── defiIOTiming.hpp
│   │   │   ├── defiKRDefs.hpp
│   │   │   ├── defiMisc.hpp
│   │   │   ├── defiNet.hpp
│   │   │   ├── defiNonDefault.hpp
│   │   │   ├── defiPartition.hpp
│   │   │   ├── defiPath.hpp
│   │   │   ├── defiPinCap.hpp
│   │   │   ├── defiPinProp.hpp
│   │   │   ├── defiProp.hpp
│   │   │   ├── defiPropType.hpp
│   │   │   ├── defiRegion.hpp
│   │   │   ├── defiRowTrack.hpp
│   │   │   ├── defiScanchain.hpp
│   │   │   ├── defiSite.hpp
│   │   │   ├── defiSlot.hpp
│   │   │   ├── defiTimingDisable.hpp
│   │   │   ├── defiUser.hpp
│   │   │   ├── defiUtil.hpp
│   │   │   ├── defiVia.hpp
│   │   │   ├── defrCallBacks.hpp
│   │   │   ├── defrData.hpp
│   │   │   ├── defrReader.hpp
│   │   │   ├── defrSettings.hpp
│   │   │   ├── defwWriter.hpp
│   │   │   ├── defwWriterCalls.hpp
│   │   │   └── defzlib.hpp
│   │   └── lef5.8/
│   │       ├── lefiArray.hpp
│   │       ├── lefiCrossTalk.hpp
│   │       ├── lefiDebug.hpp
│   │       ├── lefiDefs.hpp
│   │       ├── lefiEncryptInt.hpp
│   │       ├── lefiKRDefs.hpp
│   │       ├── lefiLayer.hpp
│   │       ├── lefiMacro.hpp
│   │       ├── lefiMisc.hpp
│   │       ├── lefiNonDefault.hpp
│   │       ├── lefiProp.hpp
│   │       ├── lefiPropType.hpp
│   │       ├── lefiUnits.hpp
│   │       ├── lefiUser.hpp
│   │       ├── lefiUtil.hpp
│   │       ├── lefiVia.hpp
│   │       ├── lefiViaRule.hpp
│   │       ├── lefrCallBacks.hpp
│   │       ├── lefrData.hpp
│   │       ├── lefrReader.hpp
│   │       ├── lefrSettings.hpp
│   │       ├── lefwWriter.hpp
│   │       ├── lefwWriterCalls.hpp
│   │       └── lefzlib.hpp
│   ├── lib/
│   │   └── linux/
│   │       ├── libdef.a
│   │       └── liblef.a
│   └── src/
│       └── rsyn/
│           ├── 3rdparty/
│           │   └── json/
│           │       └── json.hpp
│           ├── core/
│           │   ├── Rsyn.h
│           │   ├── RsynTypes.h
│           │   ├── dscp/
│           │   │   ├── LibraryCell.h
│           │   │   └── LibraryModule.h
│           │   ├── infra/
│           │   │   ├── Attribute.h
│           │   │   ├── Exception.h
│           │   │   ├── List.h
│           │   │   ├── Observer.h
│           │   │   ├── RangeBasedLoop.h
│           │   │   └── RawPointer.h
│           │   └── obj/
│           │       ├── data/
│           │       │   ├── Arc.h
│           │       │   ├── Cell.h
│           │       │   ├── Design.h
│           │       │   ├── Instance.h
│           │       │   ├── Library.h
│           │       │   ├── LibraryArc.h
│           │       │   ├── LibraryCell.h
│           │       │   ├── LibraryModule.h
│           │       │   ├── LibraryPin.h
│           │       │   ├── Module.h
│           │       │   ├── Net.h
│           │       │   ├── Object.h
│           │       │   ├── Pin.h
│           │       │   └── Port.h
│           │       ├── decl/
│           │       │   ├── Arc.h
│           │       │   ├── Cell.h
│           │       │   ├── Design.h
│           │       │   ├── Instance.h
│           │       │   ├── Library.h
│           │       │   ├── LibraryArc.h
│           │       │   ├── LibraryCell.h
│           │       │   ├── LibraryModule.h
│           │       │   ├── LibraryPin.h
│           │       │   ├── Module.h
│           │       │   ├── Net.h
│           │       │   ├── Object.h
│           │       │   ├── Pin.h
│           │       │   └── Port.h
│           │       └── impl/
│           │           ├── Arc.h
│           │           ├── Cell.h
│           │           ├── Design.h
│           │           ├── Instance.h
│           │           ├── Library.h
│           │           ├── LibraryArc.h
│           │           ├── LibraryCell.h
│           │           ├── LibraryModule.h
│           │           ├── LibraryPin.h
│           │           ├── Module.h
│           │           ├── Net.h
│           │           ├── Object.h
│           │           ├── Pin.h
│           │           └── Port.h
│           ├── db/
│           │   ├── Database.cpp
│           │   ├── Database.h
│           │   ├── Serializable.h
│           │   └── SerializationStream.h
│           ├── export/
│           │   └── Rsyn/
│           │       ├── DesignObserver
│           │       ├── PhysicalDesign
│           │       ├── PhysicalDesignObserver
│           │       ├── Point
│           │       ├── Polygon
│           │       ├── Rect
│           │       ├── RoutingGuide
│           │       ├── Scenario
│           │       ├── Session
│           │       └── Timer
│           ├── io/
│           │   ├── legacy/
│           │   │   ├── Legacy.h
│           │   │   └── PlacerInternals.h
│           │   ├── parser/
│           │   │   ├── guide-ispd18/
│           │   │   │   ├── GuideDescriptor.h
│           │   │   │   ├── GuideParser.cpp
│           │   │   │   └── GuideParser.h
│           │   │   ├── lef_def/
│           │   │   │   ├── DEFControlParser.cpp
│           │   │   │   ├── DEFControlParser.h
│           │   │   │   ├── LEFControlParser.cpp
│           │   │   │   └── LEFControlParser.h
│           │   │   ├── parser_helper.cpp
│           │   │   └── parser_helper.h
│           │   └── reader/
│           │       ├── ISPD2018Reader.cpp
│           │       ├── ISPD2018Reader.h
│           │       ├── PopulateRsyn.cpp
│           │       └── PopulateRsyn.h
│           ├── ispd18/
│           │   ├── Guide.h
│           │   ├── RoutingGuide.cpp
│           │   └── RoutingGuide.h
│           ├── phy/
│           │   ├── PhysicalDesign.h
│           │   ├── PhysicalRouting.cpp
│           │   ├── PhysicalRouting.h
│           │   ├── PhysicalService.cpp
│           │   ├── PhysicalService.h
│           │   ├── infra/
│           │   │   ├── PhysicalAttribute.h
│           │   │   └── PhysicalObserver.h
│           │   ├── obj/
│           │   │   ├── data/
│           │   │   │   ├── LayerViaManagerData.h
│           │   │   │   ├── PhysicalDesign.h
│           │   │   │   ├── PhysicalDieData.h
│           │   │   │   ├── PhysicalGCellData.h
│           │   │   │   ├── PhysicalGroupData.h
│           │   │   │   ├── PhysicalInstanceData.h
│           │   │   │   ├── PhysicalLayerData.h
│           │   │   │   ├── PhysicalLibraryCellData.h
│           │   │   │   ├── PhysicalLibraryPinData.h
│           │   │   │   ├── PhysicalNetData.h
│           │   │   │   ├── PhysicalObject.h
│           │   │   │   ├── PhysicalObstacleData.h
│           │   │   │   ├── PhysicalPinData.h
│           │   │   │   ├── PhysicalPinGeometryData.h
│           │   │   │   ├── PhysicalPinLayerData.h
│           │   │   │   ├── PhysicalRegionData.h
│           │   │   │   ├── PhysicalRoutingGridData.h
│           │   │   │   ├── PhysicalRoutingPointData.h
│           │   │   │   ├── PhysicalRowData.h
│           │   │   │   ├── PhysicalSiteData.h
│           │   │   │   ├── PhysicalSpacingData.h
│           │   │   │   ├── PhysicalSpacingRuleData.h
│           │   │   │   ├── PhysicalSpacingTableData.h
│           │   │   │   ├── PhysicalSpecialNetData.h
│           │   │   │   ├── PhysicalSpecialWireData.h
│           │   │   │   ├── PhysicalTracksData.h
│           │   │   │   ├── PhysicalViaData.h
│           │   │   │   ├── ViaGeometryData.h
│           │   │   │   └── ViaRuleData.h
│           │   │   ├── decl/
│           │   │   │   ├── LayerViaManager.h
│           │   │   │   ├── PhysicalCell.h
│           │   │   │   ├── PhysicalDesign.h
│           │   │   │   ├── PhysicalDie.h
│           │   │   │   ├── PhysicalGCell.h
│           │   │   │   ├── PhysicalGroup.h
│           │   │   │   ├── PhysicalInstance.h
│           │   │   │   ├── PhysicalLayer.h
│           │   │   │   ├── PhysicalLibraryCell.h
│           │   │   │   ├── PhysicalLibraryPin.h
│           │   │   │   ├── PhysicalModule.h
│           │   │   │   ├── PhysicalNet.h
│           │   │   │   ├── PhysicalObstacle.h
│           │   │   │   ├── PhysicalPin.h
│           │   │   │   ├── PhysicalPinGeometry.h
│           │   │   │   ├── PhysicalPinLayer.h
│           │   │   │   ├── PhysicalPort.h
│           │   │   │   ├── PhysicalRegion.h
│           │   │   │   ├── PhysicalRoutingGrid.h
│           │   │   │   ├── PhysicalRoutingPoint.h
│           │   │   │   ├── PhysicalRow.h
│           │   │   │   ├── PhysicalSite.h
│           │   │   │   ├── PhysicalSpacing.h
│           │   │   │   ├── PhysicalSpecialNet.h
│           │   │   │   ├── PhysicalSpecialWire.h
│           │   │   │   ├── PhysicalTracks.h
│           │   │   │   ├── PhysicalVia.h
│           │   │   │   ├── PhysicalViaGeometry.h
│           │   │   │   ├── PhysicalViaRule.h
│           │   │   │   ├── PhysicalViaRuleBase.h
│           │   │   │   └── PhysicalViaRuleGenerate.h
│           │   │   └── impl/
│           │   │       ├── LayerViaManager.h
│           │   │       ├── PhysicalCell.h
│           │   │       ├── PhysicalDesign.cpp
│           │   │       ├── PhysicalDesign.h
│           │   │       ├── PhysicalDie.h
│           │   │       ├── PhysicalGCell.h
│           │   │       ├── PhysicalGroup.h
│           │   │       ├── PhysicalInstance.h
│           │   │       ├── PhysicalLayer.h
│           │   │       ├── PhysicalLibraryCell.h
│           │   │       ├── PhysicalLibraryPin.h
│           │   │       ├── PhysicalModule.h
│           │   │       ├── PhysicalNet.h
│           │   │       ├── PhysicalObstacle.h
│           │   │       ├── PhysicalPin.h
│           │   │       ├── PhysicalPinGeometry.h
│           │   │       ├── PhysicalPinLayer.h
│           │   │       ├── PhysicalPort.h
│           │   │       ├── PhysicalRegion.h
│           │   │       ├── PhysicalRoutingGrid.h
│           │   │       ├── PhysicalRoutingPoint.h
│           │   │       ├── PhysicalRow.h
│           │   │       ├── PhysicalSite.h
│           │   │       ├── PhysicalSpacing.h
│           │   │       ├── PhysicalSpecialNet.h
│           │   │       ├── PhysicalSpecialWire.h
│           │   │       ├── PhysicalTracks.h
│           │   │       ├── PhysicalVia.h
│           │   │       ├── PhysicalViaGeometry.h
│           │   │       ├── PhysicalViaRule.h
│           │   │       ├── PhysicalViaRuleBase.h
│           │   │       └── PhysicalViaRuleGenerate.h
│           │   └── util/
│           │       ├── DefDescriptors.h
│           │       ├── LefDescriptors.h
│           │       ├── PhysicalLayerUtil.cpp
│           │       ├── PhysicalTransform.cpp
│           │       ├── PhysicalTransform.h
│           │       ├── PhysicalTypes.h
│           │       └── PhysicalUtil.h
│           ├── session/
│           │   ├── Reader.h
│           │   ├── Service.h
│           │   ├── Session.cpp
│           │   └── Session.h
│           ├── setup/
│           │   ├── reader.cpp
│           │   └── service.cpp
│           └── util/
│               ├── Array.h
│               ├── AsciiProgressBar.h
│               ├── Bounds.h
│               ├── Color.h
│               ├── Colorize.h
│               ├── Debug.h
│               ├── DoubleRectangle.h
│               ├── Environment.h
│               ├── Exception.h
│               ├── FloatRectangle.h
│               ├── FloatingPoint.h
│               ├── Json.h
│               ├── MD5.h
│               ├── MemoryUsage.h
│               ├── Proxy.h
│               ├── RangeBasedLoop.h
│               ├── Stipple.h
│               ├── Stopwatch.h
│               ├── String.h
│               ├── ThreadPool.h
│               ├── TristateFlag.h
│               ├── Units.h
│               ├── dbu.h
│               ├── dim.h
│               ├── double2.h
│               ├── float2.h
│               └── geometry/
│                   ├── Point.h
│                   ├── Polygon.cpp
│                   ├── Polygon.h
│                   ├── Rect.cpp
│                   └── Rect.h
├── scripts/
│   ├── build.py
│   ├── gprof2dot.py
│   ├── run.py
│   └── run_base.py
├── src/
│   ├── .clang-format
│   ├── CMakeLists.txt
│   ├── db/
│   │   ├── CutLayer.cpp
│   │   ├── CutLayer.h
│   │   ├── Database.cpp
│   │   ├── Database.h
│   │   ├── GeoPrimitive.cpp
│   │   ├── GeoPrimitive.h
│   │   ├── LayerList.cpp
│   │   ├── LayerList.h
│   │   ├── MetalLayer.cpp
│   │   ├── MetalLayer.h
│   │   ├── Net.cpp
│   │   ├── Net.h
│   │   ├── RouteGrid.cpp
│   │   ├── RouteGrid.h
│   │   ├── RsynService.h
│   │   ├── Setting.cpp
│   │   ├── Setting.h
│   │   ├── Stat.cpp
│   │   └── Stat.h
│   ├── flute/
│   │   ├── ChangeLog.txt
│   │   ├── Readme
│   │   ├── dist.c
│   │   ├── dist.h
│   │   ├── dl.c
│   │   ├── dl.h
│   │   ├── err.c
│   │   ├── err.h
│   │   ├── flute.c
│   │   ├── flute.h
│   │   ├── flute_mst.c
│   │   ├── global.h
│   │   ├── heap.c
│   │   ├── heap.h
│   │   ├── license.txt
│   │   ├── memAlloc.c
│   │   ├── memAlloc.h
│   │   ├── mst2.c
│   │   ├── mst2.h
│   │   ├── neighbors.c
│   │   └── neighbors.h
│   ├── global.h
│   ├── gr_db/
│   │   ├── GCell.cpp
│   │   ├── GCell.h
│   │   ├── GrDatabase.cpp
│   │   ├── GrDatabase.h
│   │   ├── GrGeoPrimitive.cpp
│   │   ├── GrGeoPrimitive.h
│   │   ├── GrNet.cpp
│   │   ├── GrNet.h
│   │   ├── GrRouteGrid.cpp
│   │   ├── GrRouteGrid.h
│   │   ├── GridTopo.cpp
│   │   └── GridTopo.h
│   ├── main.cpp
│   ├── multi_net/
│   │   ├── CongestionMap.cpp
│   │   ├── CongestionMap.h
│   │   ├── Router.cpp
│   │   ├── Router.h
│   │   ├── Scheduler.cpp
│   │   └── Scheduler.h
│   ├── single_net/
│   │   ├── GenGuide.cpp
│   │   ├── GenGuide.h
│   │   ├── GridGraph.cpp
│   │   ├── GridGraph.h
│   │   ├── InitRoute.cpp
│   │   ├── InitRoute.h
│   │   ├── MazeRoute.cpp
│   │   ├── MazeRoute.h
│   │   ├── SingleNetRouter.cpp
│   │   └── SingleNetRouter.h
│   └── utils/
│       ├── enum.h
│       ├── geo.h
│       ├── log.cpp
│       ├── log.h
│       ├── prettyprint.h
│       └── utils.h
└── toys/
    └── iccad2019c/
        └── ispd18_sample/
            ├── ispd18_sample.input.def
            └── ispd18_sample.input.lef
Download .txt
SYMBOL INDEX (1693 symbols across 327 files)

FILE: rsyn/include/def5.8/defiAlias.hpp
  class defrData (line 38) | class defrData
  class defiAlias_itr (line 40) | class defiAlias_itr {

FILE: rsyn/include/def5.8/defiAssertion.hpp
  class defiAssertion (line 57) | class defiAssertion {

FILE: rsyn/include/def5.8/defiBlockage.hpp
  class defiBlockage (line 40) | class defiBlockage {
    type defiPoints (line 93) | struct defiPoints
    type defiPoints (line 122) | struct defiPoints

FILE: rsyn/include/def5.8/defiComponent.hpp
  class defiComponentMaskShiftLayer (line 49) | class defiComponentMaskShiftLayer {
  class defiComponent (line 72) | class defiComponent {

FILE: rsyn/include/def5.8/defiDefs.hpp
  type defpoint (line 56) | struct defpoint
  type defpoint (line 58) | struct defpoint {
  type defrect (line 63) | struct defrect
  type defrect (line 65) | struct defrect {
  type deftoken (line 69) | struct deftoken
  type deftoken (line 71) | struct deftoken {

FILE: rsyn/include/def5.8/defiFPC.hpp
  class defiFPC (line 40) | class defiFPC {

FILE: rsyn/include/def5.8/defiFill.hpp
  class defiFill (line 41) | class defiFill {
    type defiPoints (line 78) | struct defiPoints
    type defiPoints (line 85) | struct defiPoints
    type defiPoints (line 102) | struct defiPoints
    type defiPoints (line 110) | struct defiPoints

FILE: rsyn/include/def5.8/defiGroup.hpp
  class defiGroup (line 42) | class defiGroup {

FILE: rsyn/include/def5.8/defiIOTiming.hpp
  class defiIOTiming (line 40) | class defiIOTiming {

FILE: rsyn/include/def5.8/defiMisc.hpp
  type defiPoints (line 40) | struct defiPoints {
  class defiGeometries (line 46) | class defiGeometries {
  class defiStyles (line 70) | class defiStyles {
    type defiPoints (line 84) | struct defiPoints
    type defiPoints (line 88) | struct defiPoints

FILE: rsyn/include/def5.8/defiNet.hpp
  class defiWire (line 53) | class defiWire {
  class defiSubnet (line 84) | class defiSubnet {
  class defiVpin (line 166) | class defiVpin {
  class defiShield (line 209) | class defiShield {
  class defiNet (line 240) | class defiNet {
    type defiPoints (line 400) | struct defiPoints
    type defiPoints (line 421) | struct defiPoints
    type defiPoints (line 533) | struct defiPoints
    type defiPoints (line 552) | struct defiPoints

FILE: rsyn/include/def5.8/defiNonDefault.hpp
  function BEGIN_LEFDEF_PARSER_NAMESPACE (line 37) | BEGIN_LEFDEF_PARSER_NAMESPACE

FILE: rsyn/include/def5.8/defiPartition.hpp
  class defiPartition (line 40) | class defiPartition {

FILE: rsyn/include/def5.8/defiPath.hpp
  type defiPnt (line 42) | struct defiPnt {
  type defiViaData (line 49) | struct defiViaData {
  type defiViaRect (line 56) | struct defiViaRect {
  type defiPath_e (line 64) | enum defiPath_e {
  class defiPath (line 84) | class defiPath {

FILE: rsyn/include/def5.8/defiPinCap.hpp
  class defiPinCap (line 42) | class defiPinCap {
  class defiPinAntennaModel (line 60) | class defiPinAntennaModel {
  class defiPinPort (line 127) | class defiPinPort {                      // 5.7
  class defiPin (line 209) | class defiPin {

FILE: rsyn/include/def5.8/defiPinProp.hpp
  class defiPinProp (line 40) | class defiPinProp {

FILE: rsyn/include/def5.8/defiProp.hpp
  class defiProp (line 41) | class defiProp {

FILE: rsyn/include/def5.8/defiPropType.hpp
  function BEGIN_LEFDEF_PARSER_NAMESPACE (line 36) | BEGIN_LEFDEF_PARSER_NAMESPACE

FILE: rsyn/include/def5.8/defiRegion.hpp
  class defiRegion (line 41) | class defiRegion {

FILE: rsyn/include/def5.8/defiRowTrack.hpp
  class defiRow (line 40) | class defiRow{
  class defiTrack (line 109) | class defiTrack{
  class defiGcellGrid (line 151) | class defiGcellGrid {

FILE: rsyn/include/def5.8/defiScanchain.hpp
  class defiOrdered (line 40) | class defiOrdered {
  class defiScanchain (line 74) | class defiScanchain {

FILE: rsyn/include/def5.8/defiSite.hpp
  class defiSite (line 45) | class defiSite {
  class defiBox (line 88) | class defiBox {

FILE: rsyn/include/def5.8/defiSlot.hpp
  class defiSlot (line 41) | class defiSlot {

FILE: rsyn/include/def5.8/defiTimingDisable.hpp
  class defiTimingDisable (line 43) | class defiTimingDisable {

FILE: rsyn/include/def5.8/defiVia.hpp
  class defiVia (line 42) | class defiVia {

FILE: rsyn/include/def5.8/defrCallBacks.hpp
  function BEGIN_LEFDEF_PARSER_NAMESPACE (line 39) | BEGIN_LEFDEF_PARSER_NAMESPACE

FILE: rsyn/include/def5.8/defrData.hpp
  function BEGIN_LEFDEF_PARSER_NAMESPACE (line 49) | BEGIN_LEFDEF_PARSER_NAMESPACE
  type defpoint (line 66) | struct defpoint
  class defrData (line 72) | class defrData {
  class defrContext (line 280) | class defrContext {

FILE: rsyn/include/def5.8/defrSettings.hpp
  function BEGIN_LEFDEF_PARSER_NAMESPACE (line 41) | BEGIN_LEFDEF_PARSER_NAMESPACE
  class defrSettings (line 52) | class defrSettings {
  class defrSession (line 121) | class defrSession {

FILE: rsyn/include/def5.8/defzlib.hpp
  class defrContext (line 38) | class defrContext

FILE: rsyn/include/lef5.8/lefiArray.hpp
  function BEGIN_LEFDEF_PARSER_NAMESPACE (line 37) | BEGIN_LEFDEF_PARSER_NAMESPACE
  class lefiArray (line 58) | class lefiArray {

FILE: rsyn/include/lef5.8/lefiCrossTalk.hpp
  function BEGIN_LEFDEF_PARSER_NAMESPACE (line 36) | BEGIN_LEFDEF_PARSER_NAMESPACE
  class lefiNoiseVictim (line 45) | class lefiNoiseVictim {
  class lefiNoiseResistance (line 69) | class lefiNoiseResistance {
  class lefiNoiseEdge (line 99) | class lefiNoiseEdge {
  class lefiNoiseTable (line 127) | class lefiNoiseTable {
  class lefiCorrectionVictim (line 157) | class lefiCorrectionVictim {
  class lefiCorrectionResistance (line 181) | class lefiCorrectionResistance {
  class lefiCorrectionEdge (line 211) | class lefiCorrectionEdge {
  class lefiCorrectionTable (line 239) | class lefiCorrectionTable {

FILE: rsyn/include/lef5.8/lefiDefs.hpp
  type point (line 56) | struct point
  type point (line 58) | struct point {
  type rect (line 63) | struct rect
  type rect (line 65) | struct rect {
  type token (line 69) | struct token
  type token (line 71) | struct token {

FILE: rsyn/include/lef5.8/lefiLayer.hpp
  class lefiAntennaPWL (line 54) | class lefiAntennaPWL {
  class lefiLayerDensity (line 77) | class lefiLayerDensity {
  class lefiParallel (line 118) | class lefiParallel {
  class lefiInfluence (line 147) | class lefiInfluence {
  class lefiTwoWidths (line 174) | class lefiTwoWidths {
  class lefiSpacingTable (line 205) | class lefiSpacingTable {
  class lefiOrthogonal (line 236) | class lefiOrthogonal {
  class lefiAntennaModel (line 258) | class lefiAntennaModel {
  class lefiLayer (line 361) | class lefiLayer {

FILE: rsyn/include/lef5.8/lefiMacro.hpp
  function BEGIN_LEFDEF_PARSER_NAMESPACE (line 37) | BEGIN_LEFDEF_PARSER_NAMESPACE
  class lefiPinAntennaModel (line 60) | class lefiPinAntennaModel {
  class lefiPin (line 126) | class lefiPin {
  class lefiDensity (line 465) | class lefiDensity {
    type lefiGeomRect (line 491) | struct lefiGeomRect
  class lefiMacro (line 495) | class lefiMacro {
  class lefiTiming (line 658) | class lefiTiming {
  class lefiMacroSite (line 898) | class lefiMacroSite {
  class lefiMacroForeign (line 910) | class lefiMacroForeign {

FILE: rsyn/include/lef5.8/lefiMisc.hpp
  function BEGIN_LEFDEF_PARSER_NAMESPACE (line 36) | BEGIN_LEFDEF_PARSER_NAMESPACE
  type lefiGeomRectIter (line 48) | struct lefiGeomRectIter {
  type lefiGeomPath (line 60) | struct lefiGeomPath {
  type lefiGeomPathIter (line 67) | struct lefiGeomPathIter {
  type lefiGeomPolygon (line 78) | struct lefiGeomPolygon {
  type lefiGeomPolygonIter (line 85) | struct lefiGeomPolygonIter {
  type lefiGeomEnum (line 96) | enum lefiGeomEnum {
  type lefiGeomVia (line 115) | struct lefiGeomVia {
  type lefiGeomViaIter (line 124) | struct lefiGeomViaIter {
  class lefiGeometries (line 137) | class lefiGeometries {
  class lefiSpacing (line 208) | class lefiSpacing {
  class lefiIRDrop (line 238) | class lefiIRDrop {
  class lefiMinFeature (line 270) | class lefiMinFeature {
  class lefiSite (line 291) | class lefiSite {
  class lefiSitePattern (line 341) | class lefiSitePattern {
  class lefiTrackPattern (line 378) | class lefiTrackPattern {
  class lefiGcellPattern (line 413) | class lefiGcellPattern {
  class lefiUseMinSpacing (line 439) | class lefiUseMinSpacing {
  class lefiMaxStackVia (line 461) | class lefiMaxStackVia {

FILE: rsyn/include/lef5.8/lefiNonDefault.hpp
  function BEGIN_LEFDEF_PARSER_NAMESPACE (line 38) | BEGIN_LEFDEF_PARSER_NAMESPACE

FILE: rsyn/include/lef5.8/lefiProp.hpp
  function BEGIN_LEFDEF_PARSER_NAMESPACE (line 36) | BEGIN_LEFDEF_PARSER_NAMESPACE

FILE: rsyn/include/lef5.8/lefiPropType.hpp
  function BEGIN_LEFDEF_PARSER_NAMESPACE (line 36) | BEGIN_LEFDEF_PARSER_NAMESPACE

FILE: rsyn/include/lef5.8/lefiUnits.hpp
  function BEGIN_LEFDEF_PARSER_NAMESPACE (line 36) | BEGIN_LEFDEF_PARSER_NAMESPACE

FILE: rsyn/include/lef5.8/lefiUtil.hpp
  function BEGIN_LEFDEF_PARSER_NAMESPACE (line 35) | BEGIN_LEFDEF_PARSER_NAMESPACE
  type lefiPoints (line 43) | struct lefiPoints

FILE: rsyn/include/lef5.8/lefiVia.hpp
  function BEGIN_LEFDEF_PARSER_NAMESPACE (line 37) | BEGIN_LEFDEF_PARSER_NAMESPACE
  class lefiVia (line 85) | class lefiVia {

FILE: rsyn/include/lef5.8/lefiViaRule.hpp
  function BEGIN_LEFDEF_PARSER_NAMESPACE (line 36) | BEGIN_LEFDEF_PARSER_NAMESPACE
  class lefiViaRule (line 109) | class lefiViaRule {

FILE: rsyn/include/lef5.8/lefrCallBacks.hpp
  function BEGIN_LEFDEF_PARSER_NAMESPACE (line 36) | BEGIN_LEFDEF_PARSER_NAMESPACE

FILE: rsyn/include/lef5.8/lefrData.hpp
  function BEGIN_LEFDEF_PARSER_NAMESPACE (line 58) | BEGIN_LEFDEF_PARSER_NAMESPACE
  class lefrData (line 76) | class lefrData {

FILE: rsyn/include/lef5.8/lefrReader.hpp
  type lefiNoiseMargin (line 296) | struct lefiNoiseMargin

FILE: rsyn/include/lef5.8/lefrSettings.hpp
  function BEGIN_LEFDEF_PARSER_NAMESPACE (line 40) | BEGIN_LEFDEF_PARSER_NAMESPACE
  class lefrProps (line 54) | class lefrProps {
  class lefrSettings (line 66) | class lefrSettings {

FILE: rsyn/src/rsyn/3rdparty/json/json.hpp
  type nlohmann (line 81) | namespace nlohmann
    type has_mapped_type (line 102) | struct has_mapped_type
    type DecimalSeparator (line 123) | struct DecimalSeparator : std::numpunct<char>
      method do_decimal_point (line 125) | char do_decimal_point() const
    class basic_json (line 221) | class basic_json
      class json_reverse_iterator (line 231) | class json_reverse_iterator
        method json_reverse_iterator (line 7384) | json_reverse_iterator(const typename base_iterator::iterator_type&...
        method json_reverse_iterator (line 7389) | json_reverse_iterator(const base_iterator& it) noexcept
        method json_reverse_iterator (line 7394) | json_reverse_iterator operator++(int)
        method json_reverse_iterator (line 7400) | json_reverse_iterator& operator++()
        method json_reverse_iterator (line 7407) | json_reverse_iterator operator--(int)
        method json_reverse_iterator (line 7413) | json_reverse_iterator& operator--()
        method json_reverse_iterator (line 7420) | json_reverse_iterator& operator+=(difference_type i)
        method json_reverse_iterator (line 7427) | json_reverse_iterator operator+(difference_type i) const
        method json_reverse_iterator (line 7435) | json_reverse_iterator operator-(difference_type i) const
        method difference_type (line 7443) | difference_type operator-(const json_reverse_iterator& other) const
        method reference (line 7449) | reference operator[](difference_type n) const
        method key (line 7455) | typename object_t::key_type key() const
        method reference (line 7462) | reference value() const
      class json_pointer (line 232) | class json_pointer
        method json_pointer (line 9163) | explicit json_pointer(const std::string& s = "")
        method to_string (line 9182) | std::string to_string() const noexcept
        method pop_back (line 9200) | std::string pop_back()
        method is_root (line 9213) | bool is_root() const
        method json_pointer (line 9218) | json_pointer top() const
        method reference (line 9235) | reference get_and_create(reference j) const
        method reference (line 9304) | reference get_unchecked(pointer ptr) const
        method reference (line 9348) | reference get_checked(pointer ptr) const
        method const_reference (line 9400) | const_reference get_unchecked(const_pointer ptr) const
        method const_reference (line 9444) | const_reference get_checked(const_pointer ptr) const
        method split (line 9489) | static std::vector<std::string> split(const std::string& reference...
        method replace_substring (line 9564) | static void replace_substring(std::string& s,
        method escape (line 9579) | static std::string escape(std::string s)
        method unescape (line 9588) | static void unescape(std::string& s)
        method flatten (line 9603) | static void flatten(const std::string& reference_string,
        method basic_json (line 9661) | static basic_json unflatten(const basic_json& value)
      class iterator (line 265) | class iterator
        method iterator (line 7242) | iterator() = default;
        method iterator (line 7245) | explicit iterator(pointer object) noexcept
        method iterator (line 7250) | iterator(const iterator& other) noexcept
        method iterator (line 7255) | iterator& operator=(iterator other) noexcept(
        method reference (line 7267) | reference operator*() const
        method pointer (line 7273) | pointer operator->() const
        method iterator (line 7279) | iterator operator++(int)
        method iterator (line 7287) | iterator& operator++()
        method iterator (line 7294) | iterator operator--(int)
        method iterator (line 7302) | iterator& operator--()
        method iterator (line 7309) | iterator& operator+=(difference_type i)
        method iterator (line 7316) | iterator& operator-=(difference_type i)
        method iterator (line 7323) | iterator operator+(difference_type i)
        method iterator (line 7331) | iterator operator-(difference_type i)
        method difference_type (line 7339) | difference_type operator-(const iterator& other) const
        method reference (line 7345) | reference operator[](difference_type n) const
        method reference (line 7351) | reference value() const
      class const_iterator (line 267) | class const_iterator
        method const_iterator (line 6632) | const_iterator() = default;
        method const_iterator (line 6640) | explicit const_iterator(pointer object) noexcept
        method const_iterator (line 6672) | explicit const_iterator(const iterator& other) noexcept
        method const_iterator (line 6705) | const_iterator(const const_iterator& other) noexcept
        method const_iterator (line 6714) | const_iterator& operator=(const_iterator other) noexcept(
        method set_begin (line 6731) | void set_begin() noexcept
        method set_end (line 6768) | void set_end() noexcept
        method reference (line 6799) | reference operator*() const
        method pointer (line 6840) | pointer operator->() const
        method const_iterator (line 6876) | const_iterator operator++(int)
        method const_iterator (line 6887) | const_iterator& operator++()
        method const_iterator (line 6919) | const_iterator operator--(int)
        method const_iterator (line 6930) | const_iterator& operator--()
        method const_iterator (line 7064) | const_iterator& operator+=(difference_type i)
        method const_iterator (line 7095) | const_iterator& operator-=(difference_type i)
        method const_iterator (line 7104) | const_iterator operator+(difference_type i)
        method const_iterator (line 7115) | const_iterator operator-(difference_type i)
        method difference_type (line 7126) | difference_type operator-(const const_iterator& other) const
        method reference (line 7153) | reference operator[](difference_type n) const
        method key (line 7192) | typename object_t::key_type key() const
        method reference (line 7210) | reference value() const
      method allocator_type (line 279) | static allocator_type get_allocator()
      type value_t (line 742) | enum class value_t : uint8_t
      method T (line 760) | static T* create(Args&& ... args)
      method json_value (line 819) | json_value() = default;
      method json_value (line 821) | json_value(boolean_t v) noexcept : boolean(v) {}
      method json_value (line 823) | json_value(number_integer_t v) noexcept : number_integer(v) {}
      method json_value (line 825) | json_value(number_unsigned_t v) noexcept : number_unsigned(v) {}
      method json_value (line 827) | json_value(number_float_t v) noexcept : number_float(v) {}
      method json_value (line 829) | json_value(value_t t)
      method json_value (line 883) | json_value(const string_t& value)
      method json_value (line 889) | json_value(const object_t& value)
      method json_value (line 895) | json_value(const array_t& value)
      method assert_invariant (line 910) | void assert_invariant() const
      type parse_event_t (line 932) | enum class parse_event_t : uint8_t
      method basic_json (line 1053) | basic_json(const value_t value_type)
      method basic_json (line 1086) | basic_json() = default;
      method basic_json (line 1110) | basic_json(std::nullptr_t) noexcept
      method basic_json (line 1135) | basic_json(const object_t& val)
      method basic_json (line 1172) | basic_json(const CompatibleObjectType& val)
      method basic_json (line 1200) | basic_json(const array_t& val)
      method basic_json (line 1242) | basic_json(const CompatibleArrayType& val)
      method basic_json (line 1272) | basic_json(const string_t& val)
      method basic_json (line 1298) | basic_json(const typename string_t::value_type* val)
      method basic_json (line 1331) | basic_json(const CompatibleStringType& val)
      method basic_json (line 1351) | basic_json(boolean_t val) noexcept
      method basic_json (line 1386) | basic_json(const number_integer_t val) noexcept
      method basic_json (line 1417) | basic_json(const int val) noexcept
      method basic_json (line 1456) | basic_json(const CompatibleNumberIntegerType val) noexcept
      method basic_json (line 1486) | basic_json(const number_unsigned_t val) noexcept
      method basic_json (line 1519) | basic_json(const CompatibleNumberUnsignedType val) noexcept
      method basic_json (line 1550) | basic_json(const number_float_t val) noexcept
      method basic_json (line 1599) | basic_json(const CompatibleNumberFloatType val) noexcept
      method basic_json (line 1674) | basic_json(std::initializer_list<basic_json> init,
      method basic_json (line 1757) | static basic_json array(std::initializer_list<basic_json> init =
      method basic_json (line 1797) | static basic_json object(std::initializer_list<basic_json> init =
      method basic_json (line 1821) | basic_json(size_type cnt, const basic_json& val)
      method basic_json (line 1871) | basic_json(InputIT first, InputIT last)
      method basic_json (line 1980) | explicit basic_json(std::istream& i, const parser_callback_t cb = nu...
      method basic_json (line 2012) | basic_json(const basic_json& other)
      method basic_json (line 2089) | basic_json(basic_json&& other) noexcept
      method reference (line 2126) | reference& operator=(basic_json other) noexcept (
      method string_t (line 2231) | string_t dump(const int indent = -1) const
      method value_t (line 2273) | constexpr value_t type() const noexcept
      method is_primitive (line 2303) | constexpr bool is_primitive() const noexcept
      method is_structured (line 2330) | constexpr bool is_structured() const noexcept
      method is_null (line 2352) | constexpr bool is_null() const noexcept
      method is_boolean (line 2374) | constexpr bool is_boolean() const noexcept
      method is_number (line 2404) | constexpr bool is_number() const noexcept
      method is_number_integer (line 2433) | constexpr bool is_number_integer() const noexcept
      method is_number_unsigned (line 2461) | constexpr bool is_number_unsigned() const noexcept
      method is_number_float (line 2489) | constexpr bool is_number_float() const noexcept
      method is_object (line 2511) | constexpr bool is_object() const noexcept
      method is_array (line 2533) | constexpr bool is_array() const noexcept
      method is_string (line 2555) | constexpr bool is_string() const noexcept
      method is_discarded (line 2582) | constexpr bool is_discarded() const noexcept
      method T (line 2623) | T get_impl(T*) const
      method object_t (line 2636) | object_t get_impl(object_t*) const
      method T (line 2657) | T get_impl(T*) const
      method get_impl (line 2681) | std::vector<T> get_impl(std::vector<T>*) const
      method T (line 2706) | T get_impl(T*) const
      method array_t (line 2719) | array_t get_impl(array_t*) const
      method T (line 2736) | T get_impl(T*) const
      method T (line 2753) | T get_impl(T*) const
      method boolean_t (line 2780) | constexpr boolean_t get_impl(boolean_t*) const
      method object_t (line 2788) | object_t* get_impl_ptr(object_t*) noexcept
      method object_t (line 2794) | constexpr const object_t* get_impl_ptr(const object_t*) const noexcept
      method array_t (line 2800) | array_t* get_impl_ptr(array_t*) noexcept
      method array_t (line 2806) | constexpr const array_t* get_impl_ptr(const array_t*) const noexcept
      method string_t (line 2812) | string_t* get_impl_ptr(string_t*) noexcept
      method string_t (line 2818) | constexpr const string_t* get_impl_ptr(const string_t*) const noexcept
      method boolean_t (line 2824) | boolean_t* get_impl_ptr(boolean_t*) noexcept
      method boolean_t (line 2830) | constexpr const boolean_t* get_impl_ptr(const boolean_t*) const noex...
      method number_integer_t (line 2836) | number_integer_t* get_impl_ptr(number_integer_t*) noexcept
      method number_integer_t (line 2842) | constexpr const number_integer_t* get_impl_ptr(const number_integer_...
      method number_unsigned_t (line 2848) | number_unsigned_t* get_impl_ptr(number_unsigned_t*) noexcept
      method number_unsigned_t (line 2854) | constexpr const number_unsigned_t* get_impl_ptr(const number_unsigne...
      method number_float_t (line 2860) | number_float_t* get_impl_ptr(number_float_t*) noexcept
      method number_float_t (line 2866) | constexpr const number_float_t* get_impl_ptr(const number_float_t*) ...
      method ReferenceType (line 2883) | static ReferenceType get_ref_impl(ThisType& obj)
      method ValueType (line 2945) | ValueType get() const
      method PointerType (line 2981) | PointerType get() noexcept
      method PointerType (line 2995) | constexpr const PointerType get() const noexcept
      method PointerType (line 3031) | PointerType get_ptr() noexcept
      method PointerType (line 3061) | constexpr const PointerType get_ptr() const noexcept
      method ReferenceType (line 3112) | ReferenceType get_ref()
      method ReferenceType (line 3127) | ReferenceType get_ref() const
      method reference (line 3208) | reference at(size_type idx)
      method const_reference (line 3251) | const_reference at(size_type idx) const
      method reference (line 3298) | reference at(const typename object_t::key_type& key)
      method const_reference (line 3345) | const_reference at(const typename object_t::key_type& key) const
      method reference (line 3391) | reference operator[](size_type idx)
      method const_reference (line 3439) | const_reference operator[](size_type idx) const
      method reference (line 3479) | reference operator[](const typename object_t::key_type& key)
      method const_reference (line 3530) | const_reference operator[](const typename object_t::key_type& key) c...
      method reference (line 3572) | reference operator[](T * (&key)[n])
      method const_reference (line 3607) | const_reference operator[](T * (&key)[n]) const
      method reference (line 3640) | reference operator[](T* key)
      method const_reference (line 3692) | const_reference operator[](T* key) const
      method ValueType (line 3758) | ValueType value(const typename object_t::key_type& key, ValueType de...
      method string_t (line 3784) | string_t value(const typename object_t::key_type& key, const char* d...
      method ValueType (line 3834) | ValueType value(const json_pointer& ptr, ValueType default_value) const
      method string_t (line 3859) | string_t value(const json_pointer& ptr, const char* default_value) c...
      method reference (line 3889) | reference front()
      method const_reference (line 3897) | const_reference front() const
      method reference (line 3932) | reference back()
      method const_reference (line 3942) | const_reference back() const
      method InteratorType (line 4000) | InteratorType erase(InteratorType pos)
      method InteratorType (line 4109) | InteratorType erase(InteratorType first, InteratorType last)
      method size_type (line 4197) | size_type erase(const typename object_t::key_type& key)
      method erase (line 4234) | void erase(const size_type idx)
      method iterator (line 4280) | iterator find(typename object_t::key_type key)
        method iterator (line 7242) | iterator() = default;
        method iterator (line 7245) | explicit iterator(pointer object) noexcept
        method iterator (line 7250) | iterator(const iterator& other) noexcept
        method iterator (line 7255) | iterator& operator=(iterator other) noexcept(
        method reference (line 7267) | reference operator*() const
        method pointer (line 7273) | pointer operator->() const
        method iterator (line 7279) | iterator operator++(int)
        method iterator (line 7287) | iterator& operator++()
        method iterator (line 7294) | iterator operator--(int)
        method iterator (line 7302) | iterator& operator--()
        method iterator (line 7309) | iterator& operator+=(difference_type i)
        method iterator (line 7316) | iterator& operator-=(difference_type i)
        method iterator (line 7323) | iterator operator+(difference_type i)
        method iterator (line 7331) | iterator operator-(difference_type i)
        method difference_type (line 7339) | difference_type operator-(const iterator& other) const
        method reference (line 7345) | reference operator[](difference_type n) const
        method reference (line 7351) | reference value() const
      method const_iterator (line 4296) | const_iterator find(typename object_t::key_type key) const
        method const_iterator (line 6632) | const_iterator() = default;
        method const_iterator (line 6640) | explicit const_iterator(pointer object) noexcept
        method const_iterator (line 6672) | explicit const_iterator(const iterator& other) noexcept
        method const_iterator (line 6705) | const_iterator(const const_iterator& other) noexcept
        method const_iterator (line 6714) | const_iterator& operator=(const_iterator other) noexcept(
        method set_begin (line 6731) | void set_begin() noexcept
        method set_end (line 6768) | void set_end() noexcept
        method reference (line 6799) | reference operator*() const
        method pointer (line 6840) | pointer operator->() const
        method const_iterator (line 6876) | const_iterator operator++(int)
        method const_iterator (line 6887) | const_iterator& operator++()
        method const_iterator (line 6919) | const_iterator operator--(int)
        method const_iterator (line 6930) | const_iterator& operator--()
        method const_iterator (line 7064) | const_iterator& operator+=(difference_type i)
        method const_iterator (line 7095) | const_iterator& operator-=(difference_type i)
        method const_iterator (line 7104) | const_iterator operator+(difference_type i)
        method const_iterator (line 7115) | const_iterator operator-(difference_type i)
        method difference_type (line 7126) | difference_type operator-(const const_iterator& other) const
        method reference (line 7153) | reference operator[](difference_type n) const
        method key (line 7192) | typename object_t::key_type key() const
        method reference (line 7210) | reference value() const
      method size_type (line 4326) | size_type count(typename object_t::key_type key) const
      method iterator (line 4366) | iterator begin() noexcept
        method iterator (line 7242) | iterator() = default;
        method iterator (line 7245) | explicit iterator(pointer object) noexcept
        method iterator (line 7250) | iterator(const iterator& other) noexcept
        method iterator (line 7255) | iterator& operator=(iterator other) noexcept(
        method reference (line 7267) | reference operator*() const
        method pointer (line 7273) | pointer operator->() const
        method iterator (line 7279) | iterator operator++(int)
        method iterator (line 7287) | iterator& operator++()
        method iterator (line 7294) | iterator operator--(int)
        method iterator (line 7302) | iterator& operator--()
        method iterator (line 7309) | iterator& operator+=(difference_type i)
        method iterator (line 7316) | iterator& operator-=(difference_type i)
        method iterator (line 7323) | iterator operator+(difference_type i)
        method iterator (line 7331) | iterator operator-(difference_type i)
        method difference_type (line 7339) | difference_type operator-(const iterator& other) const
        method reference (line 7345) | reference operator[](difference_type n) const
        method reference (line 7351) | reference value() const
      method const_iterator (line 4376) | const_iterator begin() const noexcept
        method const_iterator (line 6632) | const_iterator() = default;
        method const_iterator (line 6640) | explicit const_iterator(pointer object) noexcept
        method const_iterator (line 6672) | explicit const_iterator(const iterator& other) noexcept
        method const_iterator (line 6705) | const_iterator(const const_iterator& other) noexcept
        method const_iterator (line 6714) | const_iterator& operator=(const_iterator other) noexcept(
        method set_begin (line 6731) | void set_begin() noexcept
        method set_end (line 6768) | void set_end() noexcept
        method reference (line 6799) | reference operator*() const
        method pointer (line 6840) | pointer operator->() const
        method const_iterator (line 6876) | const_iterator operator++(int)
        method const_iterator (line 6887) | const_iterator& operator++()
        method const_iterator (line 6919) | const_iterator operator--(int)
        method const_iterator (line 6930) | const_iterator& operator--()
        method const_iterator (line 7064) | const_iterator& operator+=(difference_type i)
        method const_iterator (line 7095) | const_iterator& operator-=(difference_type i)
        method const_iterator (line 7104) | const_iterator operator+(difference_type i)
        method const_iterator (line 7115) | const_iterator operator-(difference_type i)
        method difference_type (line 7126) | difference_type operator-(const const_iterator& other) const
        method reference (line 7153) | reference operator[](difference_type n) const
        method key (line 7192) | typename object_t::key_type key() const
        method reference (line 7210) | reference value() const
      method const_iterator (line 4406) | const_iterator cbegin() const noexcept
        method const_iterator (line 6632) | const_iterator() = default;
        method const_iterator (line 6640) | explicit const_iterator(pointer object) noexcept
        method const_iterator (line 6672) | explicit const_iterator(const iterator& other) noexcept
        method const_iterator (line 6705) | const_iterator(const const_iterator& other) noexcept
        method const_iterator (line 6714) | const_iterator& operator=(const_iterator other) noexcept(
        method set_begin (line 6731) | void set_begin() noexcept
        method set_end (line 6768) | void set_end() noexcept
        method reference (line 6799) | reference operator*() const
        method pointer (line 6840) | pointer operator->() const
        method const_iterator (line 6876) | const_iterator operator++(int)
        method const_iterator (line 6887) | const_iterator& operator++()
        method const_iterator (line 6919) | const_iterator operator--(int)
        method const_iterator (line 6930) | const_iterator& operator--()
        method const_iterator (line 7064) | const_iterator& operator+=(difference_type i)
        method const_iterator (line 7095) | const_iterator& operator-=(difference_type i)
        method const_iterator (line 7104) | const_iterator operator+(difference_type i)
        method const_iterator (line 7115) | const_iterator operator-(difference_type i)
        method difference_type (line 7126) | difference_type operator-(const const_iterator& other) const
        method reference (line 7153) | reference operator[](difference_type n) const
        method key (line 7192) | typename object_t::key_type key() const
        method reference (line 7210) | reference value() const
      method iterator (line 4437) | iterator end() noexcept
        method iterator (line 7242) | iterator() = default;
        method iterator (line 7245) | explicit iterator(pointer object) noexcept
        method iterator (line 7250) | iterator(const iterator& other) noexcept
        method iterator (line 7255) | iterator& operator=(iterator other) noexcept(
        method reference (line 7267) | reference operator*() const
        method pointer (line 7273) | pointer operator->() const
        method iterator (line 7279) | iterator operator++(int)
        method iterator (line 7287) | iterator& operator++()
        method iterator (line 7294) | iterator operator--(int)
        method iterator (line 7302) | iterator& operator--()
        method iterator (line 7309) | iterator& operator+=(difference_type i)
        method iterator (line 7316) | iterator& operator-=(difference_type i)
        method iterator (line 7323) | iterator operator+(difference_type i)
        method iterator (line 7331) | iterator operator-(difference_type i)
        method difference_type (line 7339) | difference_type operator-(const iterator& other) const
        method reference (line 7345) | reference operator[](difference_type n) const
        method reference (line 7351) | reference value() const
      method const_iterator (line 4447) | const_iterator end() const noexcept
        method const_iterator (line 6632) | const_iterator() = default;
        method const_iterator (line 6640) | explicit const_iterator(pointer object) noexcept
        method const_iterator (line 6672) | explicit const_iterator(const iterator& other) noexcept
        method const_iterator (line 6705) | const_iterator(const const_iterator& other) noexcept
        method const_iterator (line 6714) | const_iterator& operator=(const_iterator other) noexcept(
        method set_begin (line 6731) | void set_begin() noexcept
        method set_end (line 6768) | void set_end() noexcept
        method reference (line 6799) | reference operator*() const
        method pointer (line 6840) | pointer operator->() const
        method const_iterator (line 6876) | const_iterator operator++(int)
        method const_iterator (line 6887) | const_iterator& operator++()
        method const_iterator (line 6919) | const_iterator operator--(int)
        method const_iterator (line 6930) | const_iterator& operator--()
        method const_iterator (line 7064) | const_iterator& operator+=(difference_type i)
        method const_iterator (line 7095) | const_iterator& operator-=(difference_type i)
        method const_iterator (line 7104) | const_iterator operator+(difference_type i)
        method const_iterator (line 7115) | const_iterator operator-(difference_type i)
        method difference_type (line 7126) | difference_type operator-(const const_iterator& other) const
        method reference (line 7153) | reference operator[](difference_type n) const
        method key (line 7192) | typename object_t::key_type key() const
        method reference (line 7210) | reference value() const
      method const_iterator (line 4477) | const_iterator cend() const noexcept
        method const_iterator (line 6632) | const_iterator() = default;
        method const_iterator (line 6640) | explicit const_iterator(pointer object) noexcept
        method const_iterator (line 6672) | explicit const_iterator(const iterator& other) noexcept
        method const_iterator (line 6705) | const_iterator(const const_iterator& other) noexcept
        method const_iterator (line 6714) | const_iterator& operator=(const_iterator other) noexcept(
        method set_begin (line 6731) | void set_begin() noexcept
        method set_end (line 6768) | void set_end() noexcept
        method reference (line 6799) | reference operator*() const
        method pointer (line 6840) | pointer operator->() const
        method const_iterator (line 6876) | const_iterator operator++(int)
        method const_iterator (line 6887) | const_iterator& operator++()
        method const_iterator (line 6919) | const_iterator operator--(int)
        method const_iterator (line 6930) | const_iterator& operator--()
        method const_iterator (line 7064) | const_iterator& operator+=(difference_type i)
        method const_iterator (line 7095) | const_iterator& operator-=(difference_type i)
        method const_iterator (line 7104) | const_iterator operator+(difference_type i)
        method const_iterator (line 7115) | const_iterator operator-(difference_type i)
        method difference_type (line 7126) | difference_type operator-(const const_iterator& other) const
        method reference (line 7153) | reference operator[](difference_type n) const
        method key (line 7192) | typename object_t::key_type key() const
        method reference (line 7210) | reference value() const
      method reverse_iterator (line 4507) | reverse_iterator rbegin() noexcept
      method const_reverse_iterator (line 4515) | const_reverse_iterator rbegin() const noexcept
      method reverse_iterator (line 4544) | reverse_iterator rend() noexcept
      method const_reverse_iterator (line 4552) | const_reverse_iterator rend() const noexcept
      method const_reverse_iterator (line 4581) | const_reverse_iterator crbegin() const noexcept
      method const_reverse_iterator (line 4610) | const_reverse_iterator crend() const noexcept
      class iteration_proxy (line 4617) | class iteration_proxy
        class iteration_proxy_internal (line 6504) | class iteration_proxy_internal
          method iteration_proxy_internal (line 6513) | explicit iteration_proxy_internal(IteratorType it) noexcept
          method iteration_proxy_internal (line 6518) | iteration_proxy_internal& operator*()
          method iteration_proxy_internal (line 6524) | iteration_proxy_internal& operator++()
          method key (line 6539) | typename basic_json::string_t key() const
          method value (line 6566) | typename IteratorType::reference value() const
        method iteration_proxy (line 6577) | explicit iteration_proxy(typename IteratorType::reference cont)
        method iteration_proxy_internal (line 6582) | iteration_proxy_internal begin() noexcept
          method iteration_proxy_internal (line 6513) | explicit iteration_proxy_internal(IteratorType it) noexcept
          method iteration_proxy_internal (line 6518) | iteration_proxy_internal& operator*()
          method iteration_proxy_internal (line 6524) | iteration_proxy_internal& operator++()
          method key (line 6539) | typename basic_json::string_t key() const
          method value (line 6566) | typename IteratorType::reference value() const
        method iteration_proxy_internal (line 6588) | iteration_proxy_internal end() noexcept
          method iteration_proxy_internal (line 6513) | explicit iteration_proxy_internal(IteratorType it) noexcept
          method iteration_proxy_internal (line 6518) | iteration_proxy_internal& operator*()
          method iteration_proxy_internal (line 6524) | iteration_proxy_internal& operator++()
          method key (line 6539) | typename basic_json::string_t key() const
          method value (line 6566) | typename IteratorType::reference value() const
      method iterator_wrapper (line 4631) | static iteration_proxy<iterator> iterator_wrapper(reference cont)
      method iterator_wrapper (line 4639) | static iteration_proxy<const_iterator> iterator_wrapper(const_refere...
      method empty (line 4691) | bool empty() const noexcept
      method size_type (line 4759) | size_type size() const noexcept
      method size_type (line 4825) | size_type max_size() const noexcept
      method clear (line 4884) | void clear() noexcept
      method push_back (line 4957) | void push_back(basic_json&& val)
      method reference (line 4983) | reference operator+=(basic_json&& val)
      method push_back (line 4993) | void push_back(const basic_json& val)
      method reference (line 5017) | reference operator+=(const basic_json& val)
      method push_back (line 5043) | void push_back(const typename object_t::value_type& val)
      method reference (line 5067) | reference operator+=(const typename object_t::value_type& val)
      method push_back (line 5098) | void push_back(std::initializer_list<basic_json> init)
      method reference (line 5115) | reference operator+=(std::initializer_list<basic_json> init)
      method iterator (line 5143) | iterator insert(const_iterator pos, const basic_json& val)
        method iterator (line 7242) | iterator() = default;
        method iterator (line 7245) | explicit iterator(pointer object) noexcept
        method iterator (line 7250) | iterator(const iterator& other) noexcept
        method iterator (line 7255) | iterator& operator=(iterator other) noexcept(
        method reference (line 7267) | reference operator*() const
        method pointer (line 7273) | pointer operator->() const
        method iterator (line 7279) | iterator operator++(int)
        method iterator (line 7287) | iterator& operator++()
        method iterator (line 7294) | iterator operator--(int)
        method iterator (line 7302) | iterator& operator--()
        method iterator (line 7309) | iterator& operator+=(difference_type i)
        method iterator (line 7316) | iterator& operator-=(difference_type i)
        method iterator (line 7323) | iterator operator+(difference_type i)
        method iterator (line 7331) | iterator operator-(difference_type i)
        method difference_type (line 7339) | difference_type operator-(const iterator& other) const
        method reference (line 7345) | reference operator[](difference_type n) const
        method reference (line 7351) | reference value() const
      method iterator (line 5169) | iterator insert(const_iterator pos, basic_json&& val)
        method iterator (line 7242) | iterator() = default;
        method iterator (line 7245) | explicit iterator(pointer object) noexcept
        method iterator (line 7250) | iterator(const iterator& other) noexcept
        method iterator (line 7255) | iterator& operator=(iterator other) noexcept(
        method reference (line 7267) | reference operator*() const
        method pointer (line 7273) | pointer operator->() const
        method iterator (line 7279) | iterator operator++(int)
        method iterator (line 7287) | iterator& operator++()
        method iterator (line 7294) | iterator operator--(int)
        method iterator (line 7302) | iterator& operator--()
        method iterator (line 7309) | iterator& operator+=(difference_type i)
        method iterator (line 7316) | iterator& operator-=(difference_type i)
        method iterator (line 7323) | iterator operator+(difference_type i)
        method iterator (line 7331) | iterator operator-(difference_type i)
        method difference_type (line 7339) | difference_type operator-(const iterator& other) const
        method reference (line 7345) | reference operator[](difference_type n) const
        method reference (line 7351) | reference value() const
      method iterator (line 5198) | iterator insert(const_iterator pos, size_type cnt, const basic_json&...
        method iterator (line 7242) | iterator() = default;
        method iterator (line 7245) | explicit iterator(pointer object) noexcept
        method iterator (line 7250) | iterator(const iterator& other) noexcept
        method iterator (line 7255) | iterator& operator=(iterator other) noexcept(
        method reference (line 7267) | reference operator*() const
        method pointer (line 7273) | pointer operator->() const
        method iterator (line 7279) | iterator operator++(int)
        method iterator (line 7287) | iterator& operator++()
        method iterator (line 7294) | iterator operator--(int)
        method iterator (line 7302) | iterator& operator--()
        method iterator (line 7309) | iterator& operator+=(difference_type i)
        method iterator (line 7316) | iterator& operator-=(difference_type i)
        method iterator (line 7323) | iterator operator+(difference_type i)
        method iterator (line 7331) | iterator operator-(difference_type i)
        method difference_type (line 7339) | difference_type operator-(const iterator& other) const
        method reference (line 7345) | reference operator[](difference_type n) const
        method reference (line 7351) | reference value() const
      method iterator (line 5250) | iterator insert(const_iterator pos, const_iterator first, const_iter...
        method iterator (line 7242) | iterator() = default;
        method iterator (line 7245) | explicit iterator(pointer object) noexcept
        method iterator (line 7250) | iterator(const iterator& other) noexcept
        method iterator (line 7255) | iterator& operator=(iterator other) noexcept(
        method reference (line 7267) | reference operator*() const
        method pointer (line 7273) | pointer operator->() const
        method iterator (line 7279) | iterator operator++(int)
        method iterator (line 7287) | iterator& operator++()
        method iterator (line 7294) | iterator operator--(int)
        method iterator (line 7302) | iterator& operator--()
        method iterator (line 7309) | iterator& operator+=(difference_type i)
        method iterator (line 7316) | iterator& operator-=(difference_type i)
        method iterator (line 7323) | iterator operator+(difference_type i)
        method iterator (line 7331) | iterator operator-(difference_type i)
        method difference_type (line 7339) | difference_type operator-(const iterator& other) const
        method reference (line 7345) | reference operator[](difference_type n) const
        method reference (line 7351) | reference value() const
      method iterator (line 5308) | iterator insert(const_iterator pos, std::initializer_list<basic_json...
        method iterator (line 7242) | iterator() = default;
        method iterator (line 7245) | explicit iterator(pointer object) noexcept
        method iterator (line 7250) | iterator(const iterator& other) noexcept
        method iterator (line 7255) | iterator& operator=(iterator other) noexcept(
        method reference (line 7267) | reference operator*() const
        method pointer (line 7273) | pointer operator->() const
        method iterator (line 7279) | iterator operator++(int)
        method iterator (line 7287) | iterator& operator++()
        method iterator (line 7294) | iterator operator--(int)
        method iterator (line 7302) | iterator& operator--()
        method iterator (line 7309) | iterator& operator+=(difference_type i)
        method iterator (line 7316) | iterator& operator-=(difference_type i)
        method iterator (line 7323) | iterator operator+(difference_type i)
        method iterator (line 7331) | iterator operator-(difference_type i)
        method difference_type (line 7339) | difference_type operator-(const iterator& other) const
        method reference (line 7345) | reference operator[](difference_type n) const
        method reference (line 7351) | reference value() const
      method swap (line 5345) | void swap(reference other) noexcept (
      method swap (line 5377) | void swap(array_t& other)
      method swap (line 5410) | void swap(object_t& other)
      method swap (line 5443) | void swap(string_t& other)
      method basic_json (line 5958) | static basic_json parse(const string_t& s,
      method basic_json (line 5988) | static basic_json parse(std::istream& i,
      method basic_json (line 5997) | static basic_json parse(std::istream&& i,
      method type_name (line 6062) | std::string type_name() const
      method extra_space (line 6091) | static std::size_t extra_space(const string_t& s) noexcept
      method string_t (line 6139) | static string_t escape_string(const string_t& s)
      method dump (line 6263) | void dump(std::ostream& o,
      class primitive_iterator_t (line 6429) | class primitive_iterator_t
        method set_begin (line 6433) | void set_begin() noexcept
        method set_end (line 6439) | void set_end() noexcept
        method is_begin (line 6445) | constexpr bool is_begin() const noexcept
        method is_end (line 6451) | constexpr bool is_end() const noexcept
      type internal_iterator (line 6483) | struct internal_iterator
        method internal_iterator (line 6493) | internal_iterator() noexcept
      class iteration_proxy (line 6500) | class iteration_proxy
        class iteration_proxy_internal (line 6504) | class iteration_proxy_internal
          method iteration_proxy_internal (line 6513) | explicit iteration_proxy_internal(IteratorType it) noexcept
          method iteration_proxy_internal (line 6518) | iteration_proxy_internal& operator*()
          method iteration_proxy_internal (line 6524) | iteration_proxy_internal& operator++()
          method key (line 6539) | typename basic_json::string_t key() const
          method value (line 6566) | typename IteratorType::reference value() const
        method iteration_proxy (line 6577) | explicit iteration_proxy(typename IteratorType::reference cont)
        method iteration_proxy_internal (line 6582) | iteration_proxy_internal begin() noexcept
          method iteration_proxy_internal (line 6513) | explicit iteration_proxy_internal(IteratorType it) noexcept
          method iteration_proxy_internal (line 6518) | iteration_proxy_internal& operator*()
          method iteration_proxy_internal (line 6524) | iteration_proxy_internal& operator++()
          method key (line 6539) | typename basic_json::string_t key() const
          method value (line 6566) | typename IteratorType::reference value() const
        method iteration_proxy_internal (line 6588) | iteration_proxy_internal end() noexcept
          method iteration_proxy_internal (line 6513) | explicit iteration_proxy_internal(IteratorType it) noexcept
          method iteration_proxy_internal (line 6518) | iteration_proxy_internal& operator*()
          method iteration_proxy_internal (line 6524) | iteration_proxy_internal& operator++()
          method key (line 6539) | typename basic_json::string_t key() const
          method value (line 6566) | typename IteratorType::reference value() const
      class const_iterator (line 6614) | class const_iterator : public std::iterator<std::random_access_itera...
        method const_iterator (line 6632) | const_iterator() = default;
        method const_iterator (line 6640) | explicit const_iterator(pointer object) noexcept
        method const_iterator (line 6672) | explicit const_iterator(const iterator& other) noexcept
        method const_iterator (line 6705) | const_iterator(const const_iterator& other) noexcept
        method const_iterator (line 6714) | const_iterator& operator=(const_iterator other) noexcept(
        method set_begin (line 6731) | void set_begin() noexcept
        method set_end (line 6768) | void set_end() noexcept
        method reference (line 6799) | reference operator*() const
        method pointer (line 6840) | pointer operator->() const
        method const_iterator (line 6876) | const_iterator operator++(int)
        method const_iterator (line 6887) | const_iterator& operator++()
        method const_iterator (line 6919) | const_iterator operator--(int)
        method const_iterator (line 6930) | const_iterator& operator--()
        method const_iterator (line 7064) | const_iterator& operator+=(difference_type i)
        method const_iterator (line 7095) | const_iterator& operator-=(difference_type i)
        method const_iterator (line 7104) | const_iterator operator+(difference_type i)
        method const_iterator (line 7115) | const_iterator operator-(difference_type i)
        method difference_type (line 7126) | difference_type operator-(const const_iterator& other) const
        method reference (line 7153) | reference operator[](difference_type n) const
        method key (line 7192) | typename object_t::key_type key() const
        method reference (line 7210) | reference value() const
      class iterator (line 7234) | class iterator : public const_iterator
        method iterator (line 7242) | iterator() = default;
        method iterator (line 7245) | explicit iterator(pointer object) noexcept
        method iterator (line 7250) | iterator(const iterator& other) noexcept
        method iterator (line 7255) | iterator& operator=(iterator other) noexcept(
        method reference (line 7267) | reference operator*() const
        method pointer (line 7273) | pointer operator->() const
        method iterator (line 7279) | iterator operator++(int)
        method iterator (line 7287) | iterator& operator++()
        method iterator (line 7294) | iterator operator--(int)
        method iterator (line 7302) | iterator& operator--()
        method iterator (line 7309) | iterator& operator+=(difference_type i)
        method iterator (line 7316) | iterator& operator-=(difference_type i)
        method iterator (line 7323) | iterator operator+(difference_type i)
        method iterator (line 7331) | iterator operator-(difference_type i)
        method difference_type (line 7339) | difference_type operator-(const iterator& other) const
        method reference (line 7345) | reference operator[](difference_type n) const
        method reference (line 7351) | reference value() const
      class json_reverse_iterator (line 7375) | class json_reverse_iterator : public std::reverse_iterator<Base>
        method json_reverse_iterator (line 7384) | json_reverse_iterator(const typename base_iterator::iterator_type&...
        method json_reverse_iterator (line 7389) | json_reverse_iterator(const base_iterator& it) noexcept
        method json_reverse_iterator (line 7394) | json_reverse_iterator operator++(int)
        method json_reverse_iterator (line 7400) | json_reverse_iterator& operator++()
        method json_reverse_iterator (line 7407) | json_reverse_iterator operator--(int)
        method json_reverse_iterator (line 7413) | json_reverse_iterator& operator--()
        method json_reverse_iterator (line 7420) | json_reverse_iterator& operator+=(difference_type i)
        method json_reverse_iterator (line 7427) | json_reverse_iterator operator+(difference_type i) const
        method json_reverse_iterator (line 7435) | json_reverse_iterator operator-(difference_type i) const
        method difference_type (line 7443) | difference_type operator-(const json_reverse_iterator& other) const
        method reference (line 7449) | reference operator[](difference_type n) const
        method key (line 7455) | typename object_t::key_type key() const
        method reference (line 7462) | reference value() const
      class lexer (line 7482) | class lexer
        type token_type (line 7486) | enum class token_type
        method lexer (line 7508) | explicit lexer(const string_t& s) noexcept
        method lexer (line 7518) | explicit lexer(std::istream* s) noexcept
        method lexer (line 7530) | lexer() = default;
        method lexer (line 7533) | lexer(const lexer&) = delete;
        method lexer (line 7534) | lexer operator=(const lexer&) = delete;
        method string_t (line 7559) | static string_t to_unicode(const std::size_t codepoint1,
        method token_type_name (line 7624) | static std::string token_type_name(const token_type t)
        method token_type (line 7685) | token_type scan() noexcept
        method yyfill (line 8468) | void yyfill() noexcept
        method string_t (line 8494) | string_t get_token_string() const
        method string_t (line 8558) | string_t get_string() const
        method str_to_float_t (line 8678) | long double str_to_float_t(long double* /* type */, char** endptr)...
        method str_to_float_t (line 8698) | double str_to_float_t(double* /* type */, char** endptr) const
        method str_to_float_t (line 8718) | float str_to_float_t(float* /* type */, char** endptr) const
        method get_number (line 8744) | void get_number(basic_json& result) const
      class parser (line 8853) | class parser
        method parser (line 8857) | parser(const string_t& s, const parser_callback_t cb = nullptr) no...
        method parser (line 8865) | parser(std::istream& _is, const parser_callback_t cb = nullptr) no...
        method basic_json (line 8873) | basic_json parse()
        method basic_json (line 8887) | basic_json parse_internal(bool keep)
        method get_token (line 9081) | typename lexer::token_type get_token() noexcept
        method expect (line 9087) | void expect(typename lexer::token_type t) const
        method unexpect (line 9100) | void unexpect(typename lexer::token_type t) const
      class json_pointer (line 9135) | class json_pointer
        method json_pointer (line 9163) | explicit json_pointer(const std::string& s = "")
        method to_string (line 9182) | std::string to_string() const noexcept
        method pop_back (line 9200) | std::string pop_back()
        method is_root (line 9213) | bool is_root() const
        method json_pointer (line 9218) | json_pointer top() const
        method reference (line 9235) | reference get_and_create(reference j) const
        method reference (line 9304) | reference get_unchecked(pointer ptr) const
        method reference (line 9348) | reference get_checked(pointer ptr) const
        method const_reference (line 9400) | const_reference get_unchecked(const_pointer ptr) const
        method const_reference (line 9444) | const_reference get_checked(const_pointer ptr) const
        method split (line 9489) | static std::vector<std::string> split(const std::string& reference...
        method replace_substring (line 9564) | static void replace_substring(std::string& s,
        method escape (line 9579) | static std::string escape(std::string s)
        method unescape (line 9588) | static void unescape(std::string& s)
        method flatten (line 9603) | static void flatten(const std::string& reference_string,
        method basic_json (line 9661) | static basic_json unflatten(const basic_json& value)
      method reference (line 9734) | reference operator[](const json_pointer& ptr)
      method const_reference (line 9761) | const_reference operator[](const json_pointer& ptr) const
      method reference (line 9786) | reference at(const json_pointer& ptr)
      method const_reference (line 9811) | const_reference at(const json_pointer& ptr) const
      method basic_json (line 9838) | basic_json flatten() const
      method basic_json (line 9872) | basic_json unflatten() const
      method basic_json (line 9922) | basic_json patch(const basic_json& json_patch) const
      method basic_json (line 10215) | static basic_json diff(const basic_json& source,
  type std (line 10372) | namespace std
    function swap (line 10380) | inline void swap(nlohmann::json& j1,
    type hash<nlohmann::json> (line 10391) | struct hash<nlohmann::json>

FILE: rsyn/src/rsyn/core/Rsyn.h
  function namespace (line 59) | namespace Rsyn {
  function namespace (line 244) | namespace Rsyn {
  function namespace (line 324) | namespace std {

FILE: rsyn/src/rsyn/core/RsynTypes.h
  function namespace (line 21) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/dscp/LibraryCell.h
  function namespace (line 28) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/dscp/LibraryModule.h
  function namespace (line 26) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/infra/Attribute.h
  function namespace (line 21) | namespace Rsyn {
  function accommodate (line 87) | void accommodate(const Index index) {
  function load (line 106) | void load(Design design, List<_Object> &list, _ObjectExtension defaultVa...
  function unload (line 145) | void unload() {
  function _ObjectExtension (line 160) | inline _ObjectExtension &operator[](_ObjectReference obj) { return clsDa...
  function _ObjectExtension (line 161) | inline const _ObjectExtension &operator[](_ObjectReference obj) const { ...

FILE: rsyn/src/rsyn/core/infra/Exception.h
  function namespace (line 22) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/infra/List.h
  function deleted (line 33) | deleted(true) {}
  function e (line 53) | e( nullptr ) {}
  function e (line 54) | e(e) {}
  function T (line 57) | const T * operator->() const { return &(e->value); }
  type std (line 107) | typedef std::function<void(const int index)> RemoveElementCallback;
  type std (line 108) | typedef std::function<void()> DestructorCallback;
  type std (line 110) | typedef std::list<CreateElementCallback>::iterator CreateElementCallback...
  type std (line 111) | typedef std::list<RemoveElementCallback>::iterator RemoveElementCallback...
  type std (line 112) | typedef std::list<DestructorCallback>::iterator DestructorCallbackHandler;
  function capacity (line 201) | int capacity() const {
  function Element (line 239) | const Element<T> *get(const int index) const {
  function remove (line 243) | void remove(const int index) {
  function DestructorCallbackHandler (line 255) | DestructorCallbackHandler addDestructorEventCallback(DestructorCallback ...
  function CreateElementCallbackHandler (line 260) | CreateElementCallbackHandler addCreateCallback(CreateElementCallback cal...
  function RemoveElementCallbackHandler (line 265) | RemoveElementCallbackHandler addRemoveCallback(CreateElementCallback cal...
  function deleteDestructorCallback (line 270) | void deleteDestructorCallback(DestructorCallbackHandler handler) {
  function deleteCreateCallback (line 274) | void deleteCreateCallback(CreateElementCallbackHandler handler) {
  function deleteRemoveCallback (line 278) | void deleteRemoveCallback(RemoveElementCallbackHandler handler) {
  function class (line 282) | class Iterator {
  function operator (line 331) | void operator++ () {

FILE: rsyn/src/rsyn/core/infra/Observer.h
  function namespace (line 19) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/infra/RangeBasedLoop.h
  type RangeIterator (line 112) | struct RangeIterator {
  function RangeIterator (line 142) | RangeIterator begin() { return RangeIterator(collection); }
  function RangeIterator (line 143) | RangeIterator end() { return RangeIterator(); /*dummy, not used */}
  function operator (line 172) | operator T() { return std::get<index>(*this);}

FILE: rsyn/src/rsyn/core/infra/RawPointer.h
  function namespace (line 22) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/data/Arc.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/data/Cell.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/data/Design.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/data/Instance.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/data/Library.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/data/LibraryArc.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/data/LibraryCell.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/data/LibraryModule.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/data/LibraryPin.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/data/Module.h
  type ModuleData (line 18) | struct ModuleData {

FILE: rsyn/src/rsyn/core/obj/data/Net.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/data/Object.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/data/Pin.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/data/Port.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/decl/Arc.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/decl/Cell.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/decl/Design.h
  function namespace (line 16) | namespace Rsyn {
  function filter (line 531) | bool filter() { return false; }
  function stop (line 532) | bool stop() { return index >= pins.size(); }
  function next (line 533) | void next() { ++index; }
  function PinType (line 534) | PinType current() {	return pins[index];	}
  function filter (line 586) | bool filter() { return false; }
  function stop (line 587) | bool stop() { return index >= pins.size(); }
  function next (line 588) | void next() { ++index; }
  function PinType (line 589) | PinType current() { return pins[index];	}

FILE: rsyn/src/rsyn/core/obj/decl/Instance.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/decl/Library.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/decl/LibraryArc.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/decl/LibraryCell.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/decl/LibraryModule.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/decl/LibraryPin.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/decl/Module.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/decl/Net.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/decl/Object.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/decl/Pin.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/decl/Port.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/impl/Arc.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/impl/Cell.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/impl/Design.h
  function namespace (line 16) | namespace Rsyn {
  function Index (line 906) | inline Index Design::getId(Net net) const { return net->id; }
  function Index (line 907) | inline Index Design::getId(Instance instance) const { return instance->i...
  function Index (line 908) | inline Index Design::getId(Pin pin) const { return pin->id; }
  function Index (line 909) | inline Index Design::getId(Arc arc) const { return arc->id; }
  function Index (line 910) | inline Index Design::getId(LibraryCell lcell) const { return lcell->id; }
  function Index (line 911) | inline Index Design::getId(LibraryPin lpin) const { return lpin->id; }
  function Index (line 912) | inline Index Design::getId(LibraryArc larc) const { return larc->id; }
  function unregisterObserver (line 971) | inline
  function notifyInstancePlaced (line 982) | inline
  function AttributeInitializer (line 996) | inline
  function NetTag (line 1015) | inline
  function InstanceTag (line 1023) | inline
  function LibraryCellTag (line 1031) | inline

FILE: rsyn/src/rsyn/core/obj/impl/Instance.h
  function namespace (line 18) | namespace Rsyn {
  function Pin (line 144) | inline
  function std (line 156) | inline
  function getNumPins (line 172) | inline
  function getNumInputPins (line 190) | inline
  function isPort (line 262) | inline
  function Pin (line 270) | inline
  function Pin (line 278) | inline
  function Pin (line 291) | inline
  function Arc (line 304) | inline
  function Arc (line 317) | inline
  function Arc (line 330) | inline
  function Range (line 346) | inline
  function Range (line 354) | inline
  function Range (line 362) | inline
  function isLCB (line 428) | inline
  function isFlipped (line 464) | inline
  function DBU (line 520) | inline DBU Instance::getPosition(const Dimension dim) const {
  function DBUxy (line 528) | inline DBUxy Instance::getCoordinate(const Boundary bound) const {
  function DBU (line 536) | inline DBU Instance::getCoordinate(const Boundary bound, const Dimension...
  function DBU (line 558) | inline DBU Instance::getCenter(const Dimension dim) const {
  function PhysicalTransform (line 578) | inline PhysicalTransform Instance::getTransform(const bool origin) const {
  function setFixed (line 600) | inline
  function setMacroBlock (line 616) | inline

FILE: rsyn/src/rsyn/core/obj/impl/Library.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/impl/LibraryArc.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/impl/LibraryCell.h
  function namespace (line 16) | namespace Rsyn {
  function std (line 47) | inline
  function getNumPins (line 63) | inline
  function getNumInputPins (line 77) | inline
  function LibraryPin (line 109) | inline
  function LibraryPin (line 117) | inline
  function LibraryPin (line 130) | inline

FILE: rsyn/src/rsyn/core/obj/impl/LibraryModule.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/impl/LibraryPin.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/impl/Module.h
  function namespace (line 16) | namespace Rsyn {
  function Cell (line 66) | inline
  function Port (line 75) | inline
  function Net (line 84) | inline
  function Port (line 100) | inline
  function getInstancesPerLogicalDepth (line 108) | inline
  function getNumPorts (line 223) | inline
  function std (line 247) | inline
  function Range (line 263) | inline

FILE: rsyn/src/rsyn/core/obj/impl/Net.h
  function namespace (line 16) | namespace Rsyn {
  function TopologicalIndex (line 120) | inline
  function else (line 130) | else if (hasDriver()) {
  function Range (line 182) | inline
  function Range (line 190) | inline
  function Range (line 198) | inline
  function setType (line 261) | inline
  function setIdeal (line 269) | inline
  function setUse (line 285) | inline

FILE: rsyn/src/rsyn/core/obj/impl/Object.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/core/obj/impl/Pin.h
  function namespace (line 16) | namespace Rsyn {
  function Arc (line 264) | inline
  function Range (line 292) | inline
  function Range (line 300) | inline
  function std (line 308) | inline

FILE: rsyn/src/rsyn/core/obj/impl/Port.h
  function namespace (line 16) | namespace Rsyn {

FILE: rsyn/src/rsyn/db/Database.h
  function namespace (line 24) | namespace Rsyn {

FILE: rsyn/src/rsyn/db/Serializable.h
  function namespace (line 21) | namespace Rsyn {

FILE: rsyn/src/rsyn/db/SerializationStream.h
  function namespace (line 31) | namespace Rsyn {

FILE: rsyn/src/rsyn/io/legacy/Legacy.h
  function namespace (line 23) | namespace Legacy {

FILE: rsyn/src/rsyn/io/legacy/PlacerInternals.h
  function namespace (line 28) | namespace Legacy {
  type Obstruction (line 148) | struct Obstruction {
  type Spacing (line 175) | struct Spacing {
  type DefMacro (line 194) | struct DefMacro {
  type DefPin (line 202) | struct DefPin {
  type DefConnection (line 207) | struct DefConnection {

FILE: rsyn/src/rsyn/io/parser/guide-ispd18/GuideDescriptor.h
  function class (line 22) | class GuideLayerDscp {
  function class (line 31) | class GuideNetDscp {
  function class (line 40) | class GuideDscp {

FILE: rsyn/src/rsyn/io/parser/guide-ispd18/GuideParser.h
  function class (line 34) | class GuideParser {

FILE: rsyn/src/rsyn/io/parser/lef_def/DEFControlParser.cpp
  function DefDscp (line 89) | DefDscp &getDesignFromUserData(defiUserData userData) {
  function defCheckType (line 175) | void defCheckType(defrCallbackType_e c) {
  function defRow (line 185) | int defRow(defrCallbackType_e type, defiRow* rowInfo, defiUserData userD...
  function defPin (line 216) | int defPin(defrCallbackType_e, defiPin *pin, defiUserData userData) {
  function defCompf (line 243) | int defCompf(defrCallbackType_e c, defiComponent* co, defiUserData ud) {
  function defComponentStart (line 261) | int defComponentStart(defrCallbackType_e c, int num, defiUserData ud) {
  function defNetStart (line 269) | int defNetStart(defrCallbackType_e c, int num, defiUserData ud) {
  function defDesignName (line 277) | int defDesignName(defrCallbackType_e c, const char* string, defiUserData...
  function defNetWires (line 285) | int defNetWires(defiNet* net, DefNetDscp& netDscp) {
  function defNet (line 427) | int defNet(defrCallbackType_e c, defiNet* net, defiUserData ud) {
  function defSpecialNetStart (line 444) | int defSpecialNetStart(defrCallbackType_e c, int num, void* ud) {
  function defSpecialNet (line 452) | int defSpecialNet(defrCallbackType_e c, defiNet* net, void* ud) {
  function defTrack (line 473) | int defTrack(defrCallbackType_e typ, defiTrack * track, defiUserData ud) {
  function defViaStart (line 490) | int defViaStart(defrCallbackType_e c, int number, defiUserData ud) {
  function defVia (line 498) | int defVia(defrCallbackType_e c, defiVia * via, defiUserData ud) {
  function defUnits (line 574) | int defUnits(defrCallbackType_e c, double d, defiUserData ud) {
  function defVersion (line 582) | int defVersion(defrCallbackType_e c, double d, defiUserData ud) {
  function defOrient (line 606) | int defOrient(std::string orient) {
  function defDieArea (line 620) | int defDieArea(defrCallbackType_e typ, defiBox* box, defiUserData ud) {
  function defGCellGrid (line 631) | int defGCellGrid(defrCallbackType_e typ, defiGcellGrid * gcell, defiUser...
  function defRegionStart (line 645) | int defRegionStart(defrCallbackType_e c, int num, defiUserData ud) {
  function defRegion (line 653) | int defRegion(defrCallbackType_e type, defiRegion* region, defiUserData ...
  function defGroupStart (line 673) | int defGroupStart(defrCallbackType_e c, int num, defiUserData ud) {
  function defGroupName (line 681) | int defGroupName(defrCallbackType_e type, const char* name, defiUserData...
  function defGroupMember (line 691) | int defGroupMember(defrCallbackType_e type, const char* name, defiUserDa...
  function defGroups (line 700) | int defGroups(defrCallbackType_e type, defiGroup *group, defiUserData ud) {
  function defVia (line 1156) | int defVia(defrCallbackType_e c, int num, void* ud) {

FILE: rsyn/src/rsyn/io/parser/lef_def/DEFControlParser.h
  function class (line 32) | class DEFControlParser {

FILE: rsyn/src/rsyn/io/parser/lef_def/LEFControlParser.cpp
  function freeCB (line 72) | void freeCB(void* name) {
  function LefDscp (line 95) | LefDscp &getLibraryFromUserData(lefiUserData userData) {
  function lefCheckType (line 155) | void lefCheckType(lefrCallbackType_e c) {
  function lefMacroBeginCB (line 166) | int lefMacroBeginCB(lefrCallbackType_e c, const char* macroName, lefiUse...
  function lefMacroEndCB (line 174) | int lefMacroEndCB(lefrCallbackType_e c, const char* macroName, lefiUserD...
  function lefMacroCB (line 180) | int lefMacroCB(lefrCallbackType_e c, lefiMacro* macro, lefiUserData ud) {
  function lefPinCB (line 207) | int lefPinCB(lefrCallbackType_e c, lefiPin* pin, lefiUserData ud) {
  function lefSiteCB (line 316) | int lefSiteCB(lefrCallbackType_e c, lefiSite* site, lefiUserData ud) {
  function lefUnits (line 347) | int lefUnits(lefrCallbackType_e c, lefiUnits* units, lefiUserData ud) {
  function lefObstructionCB (line 361) | int lefObstructionCB(lefrCallbackType_e c, lefiObstruction* obs, lefiUse...
  function lefLayerCB (line 392) | int lefLayerCB(lefrCallbackType_e c, lefiLayer* layer, lefiUserData ud) {
  function lefSpacingCB (line 467) | int lefSpacingCB(lefrCallbackType_e c, lefiSpacing* spacing, lefiUserDat...
  function lefViaCb (line 479) | int lefViaCb(lefrCallbackType_e typ, lefiVia* via, lefiUserData data) {
  function lefViaRuleCb (line 540) | int lefViaRuleCb(lefrCallbackType_e typ, lefiViaRule* via, lefiUserData ...

FILE: rsyn/src/rsyn/io/parser/lef_def/LEFControlParser.h
  function class (line 25) | class LEFControlParser {

FILE: rsyn/src/rsyn/io/parser/parser_helper.cpp
  type ISPD13 (line 47) | namespace ISPD13 {
    function is_special_char (line 49) | bool is_special_char (char c) {
    function read_line_as_tokens (line 63) | bool read_line_as_tokens (istream& is, vector<string>& tokens,
    function tauVerilog (line 296) | tauVerilog VerilogParser::read_line_tau15(string &aux){
    function ostream (line 1345) | ostream& operator<< (ostream& os, LibParserLUT& lut) {
    function ostream (line 1377) | ostream& operator<< (ostream& os, LibParserTimingInfo& timing) {
    function ostream (line 1398) | ostream& operator<< (ostream& os, LibParserPinInfo& pin) {
    function ostream (line 1411) | ostream& operator<< (ostream& os, LibParserCellInfo& cell) {
    function test_verilog_parser (line 1440) | void test_verilog_parser (string filename) {
    function test_sdc_parser (line 1507) | void test_sdc_parser (string filename) {
    function test_spef_parser (line 1581) | void test_spef_parser (string filename) {
    function test_timing_parser (line 1621) | void test_timing_parser (string filename) {
    function test_ceff_parser (line 1660) | void test_ceff_parser (string filename) {
    function test_lib_parser (line 1695) | void test_lib_parser (string filename) {
    function ostream (line 1721) | ostream& operator<< (ostream& os, const SpefNodeName& n) {
    function ostream (line 1727) | ostream& operator<< (ostream& os, const SpefConnection& c) {
    function ostream (line 1732) | ostream& operator<< (ostream& os, const SpefCapacitance& c) {
    function ostream (line 1737) | ostream& operator<< (ostream& os, const SpefResistance& r) {

FILE: rsyn/src/rsyn/io/parser/parser_helper.h
  function namespace (line 55) | namespace ISPD13 {
  type LibParserTimingInfo (line 411) | struct LibParserTimingInfo {
  type propType (line 517) | enum propType {LATE, EARLY}
  type timeTransType (line 518) | enum timeTransType

FILE: rsyn/src/rsyn/io/reader/ISPD2018Reader.cpp
  type Rsyn (line 24) | namespace Rsyn {

FILE: rsyn/src/rsyn/io/reader/ISPD2018Reader.h
  function namespace (line 21) | namespace Rsyn  {

FILE: rsyn/src/rsyn/io/reader/PopulateRsyn.cpp
  type Rsyn (line 30) | namespace Rsyn {

FILE: rsyn/src/rsyn/io/reader/PopulateRsyn.h
  function namespace (line 37) | namespace Rsyn {

FILE: rsyn/src/rsyn/ispd18/Guide.h
  function namespace (line 35) | namespace Rsyn {

FILE: rsyn/src/rsyn/ispd18/RoutingGuide.cpp
  type Rsyn (line 26) | namespace Rsyn {

FILE: rsyn/src/rsyn/ispd18/RoutingGuide.h
  function namespace (line 31) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/PhysicalDesign.h
  function namespace (line 45) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/PhysicalRouting.cpp
  type Rsyn (line 19) | namespace Rsyn {
    function DBUxy (line 35) | DBUxy
    function DBUxy (line 49) | DBUxy
    function DBU (line 63) | DBU
    function DBU (line 71) | DBU
    function DBU (line 119) | DBU
    function DBUxy (line 127) | DBUxy
    function DBU (line 423) | DBU PhysicalRouting::computeWirelength() const {

FILE: rsyn/src/rsyn/phy/PhysicalRouting.h
  function class (line 36) | class PhysicalRoutingWire {
  function class (line 86) | class PhysicalRoutingVia {
  function class (line 114) | class PhysicalRoutingRect {

FILE: rsyn/src/rsyn/phy/PhysicalService.cpp
  type Rsyn (line 19) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/PhysicalService.h
  function namespace (line 22) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/infra/PhysicalAttribute.h
  function namespace (line 21) | namespace Rsyn {
  function accommodate (line 107) | void accommodate(const Index index) {
  function load (line 126) | void load(PhysicalDesign design, List<_PhysicalObject> &list, _PhysicalO...
  function unload (line 165) | void unload() {
  function _PhysicalObjectExtension (line 180) | inline _PhysicalObjectExtension &operator[](_PhysicalObjectReference obj) {
  function _PhysicalObjectExtension (line 184) | inline const _PhysicalObjectExtension &operator[](_PhysicalObjectReferen...

FILE: rsyn/src/rsyn/phy/infra/PhysicalObserver.h
  function namespace (line 19) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/LayerViaManagerData.h
  function namespace (line 26) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalDesign.h
  function namespace (line 20) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalDieData.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalGCellData.h
  function namespace (line 19) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalGroupData.h
  function namespace (line 33) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalInstanceData.h
  function namespace (line 31) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalLayerData.h
  function namespace (line 33) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalLibraryCellData.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalLibraryPinData.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalNetData.h
  function namespace (line 26) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalObject.h
  function namespace (line 33) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalObstacleData.h
  function namespace (line 33) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalPinData.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalPinGeometryData.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalPinLayerData.h
  function namespace (line 33) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalRegionData.h
  function namespace (line 33) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalRoutingGridData.h
  function namespace (line 26) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalRoutingPointData.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalRowData.h
  function namespace (line 33) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalSiteData.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalSpacingData.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalSpacingRuleData.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalSpacingTableData.h
  function namespace (line 12) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalSpecialNetData.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalSpecialWireData.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalTracksData.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/PhysicalViaData.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/ViaGeometryData.h
  function namespace (line 26) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/data/ViaRuleData.h
  function namespace (line 27) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/LayerViaManager.h
  function namespace (line 26) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalCell.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalDesign.h
  function namespace (line 19) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalDie.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalGCell.h
  function namespace (line 19) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalGroup.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalInstance.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalLayer.h
  function namespace (line 34) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalLibraryCell.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalLibraryPin.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalModule.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalNet.h
  function namespace (line 26) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalObstacle.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalPin.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalPinGeometry.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalPinLayer.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalPort.h
  function namespace (line 33) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalRegion.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalRoutingGrid.h
  function namespace (line 26) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalRoutingPoint.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalRow.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalSite.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalSpacing.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalSpecialNet.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalSpecialWire.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalTracks.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalVia.h
  function namespace (line 32) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalViaGeometry.h
  function namespace (line 26) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalViaRule.h
  function namespace (line 26) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalViaRuleBase.h
  function namespace (line 26) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/decl/PhysicalViaRuleGenerate.h
  function class (line 28) | class PhysicalViaRuleGenerate : public PhysicalViaRuleBase {

FILE: rsyn/src/rsyn/phy/obj/impl/LayerViaManager.h
  function namespace (line 22) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalCell.h
  function namespace (line 22) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalDesign.cpp
  type Rsyn (line 24) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalDesign.h
  function namespace (line 16) | namespace Rsyn {
  function getNumPhysicalTracks (line 203) | inline int PhysicalDesign::getNumPhysicalTracks(Rsyn::PhysicalLayer laye...
  function std (line 218) | inline const std::vector<Rsyn::PhysicalTracks> & PhysicalDesign::allPhys...
  function hasPhysicalTracks (line 224) | inline bool PhysicalDesign::hasPhysicalTracks(Rsyn::PhysicalLayer layer)...
  function hasPhysicalRoutingGrid (line 263) | inline bool PhysicalDesign::hasPhysicalRoutingGrid(Rsyn::PhysicalLayer l...
  function getNumPhysicalGroups (line 306) | inline std::size_t PhysicalDesign::getNumPhysicalGroups() const noexcept {
  function getNumMovedCells (line 434) | inline int PhysicalDesign::getNumMovedCells() const {
  function DBUxy (line 475) | inline DBUxy PhysicalDesign::getPinDisplacement(Rsyn::Pin pin) const {
  function DBUxy (line 487) | inline DBUxy PhysicalDesign::getPinPosition(Rsyn::Pin pin) const {
  function DBUxy (line 514) | inline DBUxy PhysicalDesign::getRelaxedPinPosition(Rsyn::Pin pin) const {
  function DBU (line 544) | inline DBU PhysicalDesign::getPinDisplacement(Rsyn::Pin pin, const Dimen...
  function DBU (line 551) | inline DBU PhysicalDesign::getPinPosition(Rsyn::Pin pin, const Dimension...
  function PhysicalIndex (line 564) | inline PhysicalIndex PhysicalDesign::getId(Rsyn::PhysicalRow phRow) const {
  function PhysicalIndex (line 570) | inline PhysicalIndex PhysicalDesign::getId(Rsyn::PhysicalLayer phLayer) ...
  function PhysicalIndex (line 576) | inline PhysicalIndex PhysicalDesign::getId(Rsyn::PhysicalSpacing spacing...
  function PhysicalAttributeInitializer (line 584) | inline PhysicalAttributeInitializer PhysicalDesign::createPhysicalAttrib...
  function DBUxy (line 628) | inline DBUxy PhysicalDesign::checkPosition(const DBU x, const DBU y) {
  function getPhysicalPortByName (line 662) | inline bool Rsyn::PhysicalDesign::getPhysicalPortByName(std::string name...
  function clearNetRouting (line 853) | inline void PhysicalDesign::clearNetRouting(Rsyn::Net net) {
  function PhysicalRouting (line 860) | inline const PhysicalRouting &PhysicalDesign::getNetRouting(Rsyn::Net ne...
  function isNetRouted (line 867) | inline bool PhysicalDesign::isNetRouted(Rsyn::Net net) const {
  function unregisterObserver (line 899) | inline void PhysicalDesign::unregisterObserver(PhysicalDesignObserver *o...

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalDie.h
  function namespace (line 29) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalGCell.h
  function namespace (line 29) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalGroup.h
  function namespace (line 28) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalInstance.h
  function namespace (line 24) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalLayer.h
  function namespace (line 22) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalLibraryCell.h
  function namespace (line 22) | namespace Rsyn {
  function PhysicalTransform (line 121) | inline PhysicalTransform PhysicalLibraryCell::getTransform(const Rsyn::P...

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalLibraryPin.h
  function namespace (line 22) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalModule.h
  function namespace (line 29) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalNet.h
  function namespace (line 29) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalObstacle.h
  function namespace (line 22) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalPin.h
  function namespace (line 29) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalPinGeometry.h
  function namespace (line 28) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalPinLayer.h
  function namespace (line 27) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalPort.h
  function namespace (line 29) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalRegion.h
  function namespace (line 28) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalRoutingGrid.h
  function DBU (line 49) | inline DBU PhysicalRoutingGrid::getPosition(const Dimension dim) const {
  function DBU (line 61) | inline DBU PhysicalRoutingGrid::getSpacing(const Dimension dim) const {
  function getNumTracks (line 67) | inline int PhysicalRoutingGrid::getNumTracks(const Dimension dim) const {
  function getRow (line 91) | inline int PhysicalRoutingGrid::getRow(const DBU posY, const RoundingStr...
  function getCol (line 99) | inline int PhysicalRoutingGrid::getCol(const DBU posX, const RoundingStr...
  function DBUxy (line 107) | inline DBUxy PhysicalRoutingGrid::getPosition(const int col, const int r...
  function DBUxy (line 115) | inline DBUxy PhysicalRoutingGrid::getSnappedPosition(const DBUxy pos, co...
  function DBU (line 123) | inline DBU PhysicalRoutingGrid::getRowPosition(const int row) const {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalRoutingPoint.h
  function namespace (line 29) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalRow.h
  function namespace (line 28) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalSite.h
  function namespace (line 29) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalSpacing.h
  function namespace (line 22) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalSpecialNet.h
  function namespace (line 29) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalSpecialWire.h
  function namespace (line 30) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalTracks.h
  function namespace (line 29) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalVia.h
  function namespace (line 29) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalViaGeometry.h
  function namespace (line 23) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalViaRule.h
  function namespace (line 23) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalViaRuleBase.h
  function namespace (line 23) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/obj/impl/PhysicalViaRuleGenerate.h
  function namespace (line 23) | namespace Rsyn {
  function DBU (line 43) | inline DBU PhysicalViaRuleGenerate::getEnclosure1(const Rsyn::ViaLevel l...
  function DBU (line 49) | inline DBU PhysicalViaRuleGenerate::getEnclosure2(const Rsyn::ViaLevel l...
  function DBU (line 61) | inline DBU PhysicalViaRuleGenerate::getCutSpacing(const Dimension dim) c...

FILE: rsyn/src/rsyn/phy/util/DefDescriptors.h
  function class (line 45) | class DefComponentDscp {
  function class (line 61) | class DefGroupDscp {
  function class (line 73) | class DefPortDscp {
  function class (line 93) | class DefNetConnection {
  function class (line 102) | class DefRoutingPointDscp {
  function class (line 134) | class DefWireSegmentDscp {
  function class (line 147) | class DefWireDscp {
  function class (line 158) | class DefNetDscp {
  function class (line 172) | class DefRegionDscp {
  function class (line 184) | class DefRowDscp {
  function class (line 199) | class DefTrackDscp {
  function class (line 216) | class DefGcellGridDscp {
  function class (line 227) | class DefViaGeometryDscp {
  function class (line 244) | class DefViaDscp {
  function class (line 288) | class DefDscp {

FILE: rsyn/src/rsyn/phy/util/LefDescriptors.h
  function class (line 53) | class LefPolygonDscp {
  function class (line 61) | class LefPortGeometryDscp {
  function class (line 70) | class LefPortDscp {
  function class (line 80) | class LefPinDscp {
  function class (line 95) | class LefObsDscp {
  function class (line 106) | class LefMacroDscp {
  function class (line 118) | class LefSiteDscp {
  function class (line 132) | class LefSpacingDscp {
  function class (line 144) | class LefViaGeometryDscp {
  function class (line 155) | class LefViaDscp {
  function class (line 195) | class LefViaRuleLayerDscp {
  function class (line 233) | class LefViaRuleDscp {
  function class (line 247) | class LefUnitsDscp {
  function class (line 274) | class LefDscp {

FILE: rsyn/src/rsyn/phy/util/PhysicalLayerUtil.cpp
  type Rsyn (line 24) | namespace Rsyn {
    function getPhysicalLayerType (line 30) | Rsyn::PhysicalLayerType getPhysicalLayerType(const std::string & type) {
    function getPhysicalLayerType (line 41) | std::string getPhysicalLayerType(const Rsyn::PhysicalLayerType type) {
    function getPhysicalLayerDirection (line 54) | Rsyn::PhysicalLayerDirection getPhysicalLayerDirection(const std::stri...
    function getPhysicalLayerDirection (line 62) | std::string getPhysicalLayerDirection(const PhysicalLayerDirection dir...
    function getPhysicalOrientation (line 72) | Rsyn::PhysicalOrientation getPhysicalOrientation(const std::string &or...
    function getPhysicalOrientation (line 88) | std::string getPhysicalOrientation(const Rsyn::PhysicalOrientation ori...
    function getPhysicalMacroClass (line 106) | Rsyn::PhysicalMacroClass getPhysicalMacroClass(const std::string & mac...
    function getPhysicalMacroClass (line 119) | std::string getPhysicalMacroClass(const Rsyn::PhysicalMacroClass macro...
    function getPhysicalSymmetry (line 133) | Rsyn::PhysicalSymmetry getPhysicalSymmetry(const std::string &rowSymme...
    function getPhysicalSymmetry (line 154) | std::string getPhysicalSymmetry(const Rsyn::PhysicalSymmetry rowSymmet...
    function isPhysicalSymmetryX (line 176) | bool isPhysicalSymmetryX(const Rsyn::PhysicalSymmetry symmetry) {
    function isPhysicalSymmetryY (line 183) | bool isPhysicalSymmetryY(const Rsyn::PhysicalSymmetry symmetry) {
    function isPhysicalSymmetryR90 (line 190) | bool isPhysicalSymmetryR90(const Rsyn::PhysicalSymmetry symmetry) {
    function getPhysicalSiteClass (line 197) | Rsyn::PhysicalSiteClass getPhysicalSiteClass(const std::string & siteC...
    function getPhysicalSiteClass (line 206) | std::string getPhysicalSiteClass(const Rsyn::PhysicalSiteClass siteCla...
    function getPhysicalPinDirection (line 216) | Rsyn::PhysicalPinDirection getPhysicalPinDirection(const std::string &...
    function getPhysicalPinDirection (line 225) | std::string getPhysicalPinDirection(const Rsyn::PhysicalPinDirection p...
    function getPhysicalPinGeometryClass (line 233) | Rsyn::PhysicalPinGeometryClass getPhysicalPinGeometryClass(const std::...
    function getPhysicalPinGeometryClass (line 243) | std::string getPhysicalPinGeometryClass(const Rsyn::PhysicalPinGeometr...
    function getPhysicalRegionType (line 254) | Rsyn::RegionType getPhysicalRegionType(const std::string & type) {
    function getPhysicalRegionType (line 262) | std::string getPhysicalRegionType(const Rsyn::RegionType type) {
    function getPhysicalDesignModeType (line 272) | Rsyn::PhysicalDesignMode getPhysicalDesignModeType(const std::string &...
    function getPhysicalDesignModeType (line 283) | std::string getPhysicalDesignModeType(const Rsyn::PhysicalDesignMode t...
    function getPhysicalPinUseType (line 298) | Rsyn::PhysicalPinUse getPhysicalPinUseType(const std::string & type) {
    function getPhysicalPinUseType (line 311) | std::string getPhysicalPinUseType(const Rsyn::PhysicalPinUse type) {
    function getPhysicalTrackDirectionDEF (line 324) | Rsyn::PhysicalTrackDirection getPhysicalTrackDirectionDEF(const std::s...
    function getPhysicalTrackDirectionDEF (line 332) | std::string getPhysicalTrackDirectionDEF(const Rsyn::PhysicalTrackDire...
    function getPhysicalTrackDirection (line 342) | std::string getPhysicalTrackDirection(const Rsyn::PhysicalTrackDirecti...
    function getPhysicalGeneratedNamePrefix (line 352) | std::string getPhysicalGeneratedNamePrefix() {
    function getPhysicalInvalidPrefix (line 358) | std::string getPhysicalInvalidPrefix() {
    function getPhysicalInvalidName (line 364) | std::string getPhysicalInvalidName() {
    function getPhysicalNullName (line 370) | std::string getPhysicalNullName() {

FILE: rsyn/src/rsyn/phy/util/PhysicalTransform.cpp
  type Rsyn (line 18) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/util/PhysicalTransform.h
  function namespace (line 25) | namespace Rsyn {

FILE: rsyn/src/rsyn/phy/util/PhysicalTypes.h
  type DBUType (line 36) | enum DBUType : std::int8_t {
  type PhysicalType (line 54) | enum PhysicalType : std::int8_t {
  type PhysicalLayerType (line 77) | enum PhysicalLayerType : std::int8_t {
  type PhysicalViaLayerType (line 95) | enum PhysicalViaLayerType : std::int8_t {
  type ViaType (line 105) | enum ViaType : std::int8_t {
  type ViaLevel (line 112) | enum ViaLevel : std::int8_t {
  type ViaRange (line 119) | enum ViaRange : std::int8_t {
  type PhysicalLayerDirection (line 128) | enum PhysicalLayerDirection : std::int8_t {
  type PhysicalTrackDirection (line 140) | enum PhysicalTrackDirection : std::int8_t {
  type PhysicalSiteClass (line 157) | enum PhysicalSiteClass : std::int8_t {
  type PhysicalPinDirection (line 172) | enum PhysicalPinDirection : std::int8_t {
  type PhysicalPinUse (line 187) | enum PhysicalPinUse : std::int8_t {
  type PhysicalMacroClass (line 208) | enum PhysicalMacroClass : std::int8_t {
  type PhysicalMacroBlockClass (line 231) | enum PhysicalMacroBlockClass : std::int8_t {
  type PhysicalSymmetry (line 250) | enum PhysicalSymmetry : std::int8_t {
  type PhysicalPinGeometryClass (line 275) | enum PhysicalPinGeometryClass : std::int8_t {
  type class (line 292) | enum class
  type class (line 303) | enum class
  function PhysicalGCellDirection (line 318) | enum class PhysicalGCellDirection : std::int8_t {

FILE: rsyn/src/rsyn/phy/util/PhysicalUtil.h
  function namespace (line 24) | namespace Rsyn {

FILE: rsyn/src/rsyn/session/Reader.h
  function namespace (line 29) | namespace Rsyn {

FILE: rsyn/src/rsyn/session/Service.h
  function namespace (line 21) | namespace Rsyn {

FILE: rsyn/src/rsyn/session/Session.cpp
  type Rsyn (line 27) | namespace Rsyn {

FILE: rsyn/src/rsyn/session/Session.h
  function namespace (line 29) | namespace Rsyn {
  function unsetSessionVariable (line 126) | static void unsetSessionVariable(const std::string &name) {
  function registerService (line 187) | void registerService(const std::string &name) {
  function ServiceHandler (line 204) | static ServiceHandler getService(const std::string &name,
  function isServiceRegistered (line 215) | static bool isServiceRegistered(const std::string &name) {
  function isServiceRunning (line 221) | static bool isServiceRunning(const std::string &name) {
  function registerReader (line 269) | void registerReader(const std::string &name) {
  function std (line 294) | static const std::string &getInstallationPath() { return sessionData->cl...
  function class (line 329) | class Startup {

FILE: rsyn/src/rsyn/setup/reader.cpp
  type Rsyn (line 28) | namespace Rsyn {

FILE: rsyn/src/rsyn/setup/service.cpp
  type Rsyn (line 28) | namespace Rsyn {

FILE: rsyn/src/rsyn/util/Array.h
  function initialize (line 46) | void initialize( const int numCols, const int numRows ) {
  function initialize (line 53) | void initialize( const int numCols, const int numRows, const T value ) {
  function initialize (line 60) | void initialize( const int dimension ) {
  function assign (line 64) | void assign(const T value) {
  function T (line 69) | const T & operator()( const int col, const int row ) const { return clsE...
  function T (line 72) | const T & operator()( const int linearIndex ) const { return clsElements...
  function getCol (line 78) | int getCol( const int linearIndex ) const { return linearIndex % clsNumC...
  function getRow (line 79) | int getRow( const int linearIndex ) const { return linearIndex / clsNumC...
  function clampCol (line 81) | int clampCol(const int col) const { return std::max(0, std::min(col, cls...
  function clampRow (line 82) | int clampRow(const int row) const { return std::max(0, std::min(row, cls...
  function isValidIndex (line 84) | bool isValidIndex(const int col, const int row) const {
  function computeLinearIndex (line 90) | int computeLinearIndex( const int col, const int row ) const {
  function gnuplotColorMap (line 94) | void gnuplotColorMap(const std::string &filename) const {
  function gnuplot3DMap (line 127) | void gnuplot3DMap(const std::string &filename) const {
  function initialize (line 166) | void initialize(const int length0, const int length1, const int length2,...
  function T (line 174) | const T &operator()(const int i, const int j, const int k) const {
  function getLength (line 182) | int getLength(const int dimension) const {
  function assign (line 187) | void assign(const T &value) {
  function isValidIndex (line 191) | bool isValidIndex(const int i, const int j, const int k) const {
  function getLinearIndex (line 216) | int getLinearIndex(const int i, const int j, const int k) const {

FILE: rsyn/src/rsyn/util/AsciiProgressBar.h
  function class (line 32) | class AsciiProgressBar {
  function setMaxValue (line 80) | void setMaxValue(const int maxValue) {
  function setCurrentValue (line 85) | void setCurrentValue(const int value) {
  function finish (line 99) | void finish() {

FILE: rsyn/src/rsyn/util/Bounds.h
  function class (line 27) | class Bounds {
  function updatePoints (line 51) | void updatePoints(const DBUxy pmin, const DBUxy pmax){
  function updatePoints (line 55) | void updatePoints(const DBU xMin, const DBU yMin, const DBU xMax, const ...
  function DBUxy (line 62) | const DBUxy &operator[](const int boundary) const { return clsPoints[bou...
  function DBU (line 64) | DBU computeLength(const int dimension) const { return (*this)[UPPER][dim...
  function FloatingPointDBU (line 67) | FloatingPointDBU computeDiagonal() const { return std::sqrt( std::pow(co...
  function DBU (line 75) | DBU randomInnerPoint(const int dimension) const {
  function DBU (line 80) | DBU overlapArea( const Bounds &rect ) const {
  function DBU (line 87) | DBU getCoordinate(const Boundary bound, const Dimension dim ) const { re...
  function DBUxy (line 88) | DBUxy getCoordinate(const Boundary bound ) const { return (*this)[bound]; }
  function overlap (line 98) | bool overlap(const Bounds &rect) const {
  function Bounds (line 108) | Bounds overlapRectangle(const Bounds &rect) const {
  function DBU (line 130) | DBU overlapDimensionLength(const Bounds &rect, const Dimension dim ) con...
  function between (line 138) | bool between( const DBU pos, const Dimension DIMENSION ) const {
  function inside (line 144) | bool inside( const DBU x, const DBU y ) const {
  function inside (line 150) | bool inside( const DBUxy pos ) const {
  function inside (line 154) | bool inside( const Bounds & bounds ) const {
  function moveTo (line 159) | void moveTo( const DBU position, const Dimension DIMENSION ) {
  function moveTo (line 165) | void moveTo( const DBUxy position ) {
  function moveCenterTo (line 171) | void moveCenterTo( const DBUxy position ) {
  function translate (line 177) | void translate( const DBUxy displacement ) {
  function moveTo (line 182) | void moveTo( const DBU x, const DBU y ) { moveTo(DBUxy(x,y)); }
  function moveCenterTo (line 183) | void moveCenterTo( const DBU x, const DBU y ) { moveCenterTo(DBUxy(x,y)); }
  function translate (line 184) | void translate( const DBU x, const DBU y ) { translate(DBUxy(x,y)); }
  function Bounds (line 186) | Bounds getTranslated(const DBUxy displacement) const {
  function Bounds (line 192) | Bounds getTranslated(const DBU x, const DBU y) const {
  function scaleCoordinates (line 198) | void scaleCoordinates(const FloatingPointDBU scaling) {
  function scaleCentralized (line 206) | void scaleCentralized(const FloatingPointDBU xFactor, const FloatingPoin...
  function scaleCentralized (line 214) | void scaleCentralized(const FloatingPointDBU factor) {
  function setLength (line 219) | void setLength(const Dimension DIMENSION, const DBU length) {
  function DBUxy (line 232) | DBUxy closestPoint(const DBUxy p) const {
  function degenerate (line 240) | void degenerate() {
  function stretchToFit (line 249) | void stretchToFit(const DBU x, const DBU y) {
  function stretchToFit (line 254) | void stretchToFit(const DBUxy p) {
  function clear (line 258) | void clear () {

FILE: rsyn/src/rsyn/util/Color.h
  function class (line 26) | class Color {
  function setRGB (line 45) | void setRGB(const unsigned char red, const unsigned char green, const un...
  function setRGB (line 51) | void setRGB(Color color) {

FILE: rsyn/src/rsyn/util/Colorize.h
  function class (line 25) | class Colorize {

FILE: rsyn/src/rsyn/util/DoubleRectangle.h
  function class (line 30) | class DoubleRectangle {
  function Bounds (line 65) | Bounds scaleAndConvertToDbu(const double scale,
  function Bounds (line 73) | Bounds convertToDbu(
  function Bounds (line 79) | Bounds scaleAndConvertToDbu(const double scale,
  function Bounds (line 84) | Bounds convertToDbu(const RoundingStrategy rounding = ROUND_DOWN) const {
  function updatePoints (line 88) | void updatePoints(const double2 pmin, const double2 pmax){
  function updatePoints (line 92) | void updatePoints(const double xMin, const double yMin, const double xMa...
  function double2 (line 99) | const double2 &operator[](const int boundary) const { return clsPoints[b...
  function computeLength (line 101) | double computeLength(const int dimension) const { return (*this)[UPPER][...
  function computeDiagonal (line 104) | double computeDiagonal() const { return std::sqrt( std::pow(computeLengt...
  function between (line 160) | bool between( const double pos, const Dimension DIMENSION ) const {
  function inside (line 166) | bool inside( const double x, const double y ) const {
  function inside (line 172) | bool inside( const double2 pos ) const {
  function moveTo (line 178) | void moveTo( const double position, const Dimension DIMENSION ) {
  function moveTo (line 184) | void moveTo( const double2 position ) {
  function moveCenterTo (line 190) | void moveCenterTo( const double2 position ) {
  function translate (line 196) | void translate( const double2 displacement ) {
  function moveTo (line 201) | void moveTo( const double x, const double y ) { moveTo(double2(x,y)); }
  function moveCenterTo (line 202) | void moveCenterTo( const double x, const double y ) { moveCenterTo(doubl...
  function translate (line 203) | void translate( const double x, const double y ) { translate(double2(x,y...
  function scaleCoordinates (line 207) | void scaleCoordinates(const double numb){
  function scaleCentralized (line 215) | void scaleCentralized(const double2 factor) {
  function scaleCentralized (line 223) | void scaleCentralized(const double factor) {
  function double2 (line 236) | double2 closestPoint(const double2 p) const {
  function degenerate (line 244) | void degenerate() {
  function stretchToFit (line 253) | void stretchToFit(const double x, const double y) {
  function stretchToFit (line 258) | void stretchToFit(const double2 p) {
  function clear (line 262) | void clear () {

FILE: rsyn/src/rsyn/util/Environment.h
  function class (line 29) | class Environment {
  function getInteger (line 49) | static int getInteger(const std::string &name, const int defaultValue) {...
  function getFloat (line 50) | static float getFloat(const std::string &name, const float defaultValue)...
  function getDouble (line 51) | static double getDouble(const std::string &name, const double defaultVal...
  function std (line 52) | static std::string getString(const std::string &name, const std::string ...

FILE: rsyn/src/rsyn/util/Exception.h
  function class (line 23) | class Exception: public std::exception {

FILE: rsyn/src/rsyn/util/FloatRectangle.h
  function class (line 30) | class FloatRectangle {
  function Bounds (line 65) | Bounds scaleAndConvertToDbu(const float scale,
  function Bounds (line 73) | Bounds convertToDbu(
  function Bounds (line 79) | Bounds scaleAndConvertToDbu(const float scale,
  function Bounds (line 84) | Bounds convertToDbu(const RoundingStrategy rounding = ROUND_DOWN) const {
  function updatePoints (line 88) | void updatePoints(const float2 pmin, const float2 pmax){
  function updatePoints (line 92) | void updatePoints(const float xMin, const float yMin, const float xMax, ...
  function float2 (line 99) | const float2 &operator[](const int boundary) const { return clsPoints[bo...
  function computeLength (line 101) | float computeLength(const int dimension) const { return (*this)[UPPER][d...
  function computeDiagonal (line 104) | float computeDiagonal() const { return std::sqrt( std::pow(computeLength...
  function between (line 160) | bool between( const float pos, const Dimension DIMENSION ) const {
  function inside (line 166) | bool inside( const float x, const float y ) const {
  function inside (line 172) | bool inside( const float2 pos ) const {
  function moveTo (line 178) | void moveTo( const float position, const Dimension DIMENSION ) {
  function moveTo (line 184) | void moveTo( const float2 position ) {
  function moveCenterTo (line 190) | void moveCenterTo( const float2 position ) {
  function translate (line 196) | void translate( const float2 displacement ) {
  function moveTo (line 201) | void moveTo( const float x, const float y ) { moveTo(float2(x,y)); }
  function moveCenterTo (line 202) | void moveCenterTo( const float x, const float y ) { moveCenterTo(float2(...
  function translate (line 203) | void translate( const float x, const float y ) { translate(float2(x,y)); }
  function scaleCoordinates (line 207) | void scaleCoordinates(const float numb){
  function scaleCentralized (line 215) | void scaleCentralized(const float2 factor) {
  function scaleCentralized (line 223) | void scaleCentralized(const float factor) {
  function float2 (line 236) | float2 closestPoint(const float2 p) const {
  function degenerate (line 244) | void degenerate() {
  function stretchToFit (line 253) | void stretchToFit(const float x, const float y) {
  function stretchToFit (line 258) | void stretchToFit(const float2 p) {
  function clear (line 262) | void clear () {

FILE: rsyn/src/rsyn/util/FloatingPoint.h
  type RoundingStrategy (line 23) | enum RoundingStrategy {
  function namespace (line 29) | namespace Rsyn {
  function class (line 36) | class Infinity {
  function class (line 43) | class FloatingPoint {
  function isInit (line 89) | static bool isInit(const float value) {return isInit<float>(value);}
  function isInit (line 90) | static bool isInit(const double value) {return isInit<double>(value);}
  function isUninit (line 92) | static bool isUninit(const float value) {return isUninit<float>(value);}
  function isUninit (line 93) | static bool isUninit(const double value) {return isUninit<double>(value);}
  function isInfinity (line 95) | static bool isInfinity(const float value) {return isInfinity<float>(valu...
  function isInfinity (line 96) | static bool isInfinity(const double value) {return isInfinity<double>(va...
  function round (line 98) | static int round(const float value, const RoundingStrategy roudingStrate...
  function round (line 99) | static long round(const double value, const RoundingStrategy roudingStra...
  function Rsyn (line 101) | static Rsyn::Infinity getInfinity() {return Rsyn::Infinity();}
  function Rsyn (line 102) | static Rsyn::Uninit getUninit() {return Rsyn::Uninit();}
  function R (line 107) | static
  function isInit (line 118) | bool isInit(const T value) {
  function isUninit (line 123) | bool isUninit(const T value) {
  function isInfinity (line 128) | bool isInfinity(const T value) {

FILE: rsyn/src/rsyn/util/Json.h
  function namespace (line 21) | namespace Rsyn {

FILE: rsyn/src/rsyn/util/MD5.h
  function class (line 69) | class MD5
  function FF (line 190) | inline void MD5::FF(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 ...
  function GG (line 194) | inline void MD5::GG(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 ...
  function HH (line 198) | inline void MD5::HH(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 ...
  function II (line 202) | inline void MD5::II(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 ...
  function MD5 (line 209) | inline MD5::MD5()
  function MD5 (line 217) | inline MD5::MD5(const std::string &text)
  function init (line 226) | inline void MD5::init()
  function decode (line 243) | inline void MD5::decode(uint4 output[], const uint1 input[], size_type len)
  function encode (line 254) | inline void MD5::encode(uint1 output[], const uint4 input[], size_type len)
  function transform (line 267) | inline void MD5::transform(const uint1 block[blocksize])
  function update (line 357) | inline void MD5::update(const unsigned char input[], size_type length)
  function update (line 395) | inline void MD5::update(const char input[], size_type length)
  function MD5 (line 404) | inline MD5& MD5::finalize()
  function std (line 463) | inline std::string md5(const std::string str)

FILE: rsyn/src/rsyn/util/MemoryUsage.h
  function class (line 23) | class MemoryUsage {
  function class (line 36) | class MemoryUsage {

FILE: rsyn/src/rsyn/util/Proxy.h
  function namespace (line 19) | namespace Rsyn {
  function namespace (line 64) | namespace std {

FILE: rsyn/src/rsyn/util/RangeBasedLoop.h
  type RangeIterator (line 112) | struct RangeIterator {
  function RangeIterator (line 142) | RangeIterator begin() { return RangeIterator(collection); }
  function RangeIterator (line 143) | RangeIterator end() { return RangeIterator(); /*dummy, not used */}

FILE: rsyn/src/rsyn/util/Stipple.h
  type LineStippleMask (line 19) | enum LineStippleMask : std::uint8_t {
  type FillStippleMask (line 25) | enum FillStippleMask : std::uint8_t {

FILE: rsyn/src/rsyn/util/Stopwatch.h
  function class (line 41) | class Stopwatch {
  function class (line 160) | class StopwatchGuard {

FILE: rsyn/src/rsyn/util/String.h
  function class (line 24) | class String {

FILE: rsyn/src/rsyn/util/ThreadPool.h
  function class (line 58) | class ThreadPool {
  function ThreadPool (line 103) | inline ThreadPool::ThreadPool(const std::size_t numThreads) {
  function ThreadPool (line 109) | inline ThreadPool::ThreadPool() {
  function startWorkers (line 115) | inline void ThreadPool::startWorkers(const std::size_t numThreads) {
  function stopWorkers (line 144) | inline void ThreadPool::stopWorkers() {
  function wait (line 178) | inline void ThreadPool::wait() {
  function ThreadPool (line 185) | inline ThreadPool::~ThreadPool() {

FILE: rsyn/src/rsyn/util/TristateFlag.h
  function namespace (line 19) | namespace Rsyn {

FILE: rsyn/src/rsyn/util/Units.h
  function namespace (line 22) | namespace Rsyn {

FILE: rsyn/src/rsyn/util/dbu.h
  type std (line 32) | typedef std::int64_t DBU;
  type FloatingPointDBU (line 33) | typedef double FloatingPointDBU;
  function operator (line 79) | inline const bool operator == ( const DBUxy v ) const {
  function operator (line 83) | inline const bool operator != ( const DBUxy v ) const {
  function operator (line 87) | inline void operator *= ( const FloatingPointDBU scalar) {
  function operator (line 92) | inline void operator /= ( const FloatingPointDBU scalar) {
  function DBU (line 98) | const DBU &operator[](const int dimension) const { return xy[dimension]; }
  function FloatingPointDBU (line 101) | FloatingPointDBU norm() const {
  function DBUxy (line 110) | DBUxy safeNormalized() const {
  function set (line 123) | void set(const DBU x, const DBU y ) {
  function scale (line 128) | void scale(const FloatingPointDBU xScaling, const FloatingPointDBU yScal...
  function scale (line 133) | void scale(const FloatingPointDBU scaling){
  function abs (line 142) | void abs() {
  function clear (line 147) | void clear () {
  function DBU (line 152) | static DBU computeManhattanDistance(const DBUxy p0, const DBUxy p1) {
  function T (line 216) | T

FILE: rsyn/src/rsyn/util/dim.h
  type Dimension (line 31) | enum Dimension {
  function std (line 36) | inline std::string getDimension(const Dimension dim ) {
  type Boundary (line 50) | enum Boundary {

FILE: rsyn/src/rsyn/util/double2.h
  function operator (line 101) | inline const bool operator == ( const double2 v ) const {
  function operator (line 105) | inline const bool operator != ( const double2 v ) const {
  function const (line 110) | MAKE_SELF_OPERATOR_SCALAR( /= );
  function double2 (line 120) | double2 normalized() const {
  function apply (line 133) | void apply(const double scalar) {
  function set (line 138) | void set( const double x, const double y ) {
  function scale (line 143) | void scale(const double numb){
  function abs (line 152) | void abs () {
  function clear (line 157) | void clear () {
  function double2 (line 189) | inline double2 pow( const double2 base, const double exp ) {
  function approximatelyEqual (line 195) | inline bool double2::approximatelyEqual(const double2 other, const doubl...
  function class (line 211) | class double2_split_vector {
  function double2 (line 236) | const double2 operator[](const int index) const { return double2(xy[0][i...
  function double2_ref (line 237) | double2_ref operator[](const int index) { return double2_ref(xy[0][index...
  function resize (line 239) | void resize(size_t size) { xy[0].resize(size); xy[1].resize(size); }
  function resize (line 240) | void resize(size_t size, double2 val) { xy[0].resize(size, val.x); xy[1]...
  function assign (line 242) | void assign(size_t n, double2 val ) { xy[0].assign(n, val.x); xy[1].assi...
  function clear (line 244) | void clear() { xy[0].clear(); xy[1].clear(); }

FILE: rsyn/src/rsyn/util/float2.h
  function operator (line 101) | inline const bool operator == ( const float2 v ) const {
  function operator (line 105) | inline const bool operator != ( const float2 v ) const {
  function const (line 110) | MAKE_SELF_OPERATOR_SCALAR( /= );
  function norm (line 116) | float norm() const {
  function float2 (line 125) | float2 safeNormalized() const {
  function apply (line 138) | void apply(const float scalar) {
  function set (line 143) | void set( const float x, const float y ) {
  function scale (line 148) | void scale(const float numb){
  function abs (line 157) | void abs () {
  function clear (line 162) | void clear () {
  function float2 (line 194) | inline float2 pow( const float2 base, const float exp ) {
  function approximatelyEqual (line 200) | inline bool float2::approximatelyEqual(const float2 other, const float p...

FILE: rsyn/src/rsyn/util/geometry/Point.h
  function namespace (line 25) | namespace Rsyn {

FILE: rsyn/src/rsyn/util/geometry/Polygon.cpp
  type Rsyn (line 27) | namespace Rsyn {
    function Polygon (line 40) | Polygon
    function Polygon (line 61) | Polygon
    function float2 (line 124) | float2
    function findPoint (line 158) | bool
    function tracePathOutline (line 195) | void
    function Polygon (line 253) | Polygon
  type Rsyn (line 59) | namespace Rsyn {
    function Polygon (line 40) | Polygon
    function Polygon (line 61) | Polygon
    function float2 (line 124) | float2
    function findPoint (line 158) | bool
    function tracePathOutline (line 195) | void
    function Polygon (line 253) | Polygon
  type Rsyn (line 122) | namespace Rsyn {
    function Polygon (line 40) | Polygon
    function Polygon (line 61) | Polygon
    function float2 (line 124) | float2
    function findPoint (line 158) | bool
    function tracePathOutline (line 195) | void
    function Polygon (line 253) | Polygon

FILE: rsyn/src/rsyn/util/geometry/Polygon.h
  function namespace (line 28) | namespace Rsyn {

FILE: rsyn/src/rsyn/util/geometry/Rect.cpp
  type Rsyn (line 19) | namespace Rsyn {
    function Polygon (line 30) | Polygon

FILE: rsyn/src/rsyn/util/geometry/Rect.h
  function namespace (line 27) | namespace Rsyn {

FILE: scripts/build.py
  function run (line 10) | def run(command):

FILE: scripts/gprof2dot.py
  function compat_iteritems (line 39) | def compat_iteritems(x): return x.items()  # No iteritems() in Python 3
  function compat_itervalues (line 40) | def compat_itervalues(x): return x.values()  # No itervalues() in Python 3
  function compat_keys (line 41) | def compat_keys(x): return list(x.keys())  # keys() is a generator in Py...
  function compat_iteritems (line 47) | def compat_iteritems(x): return x.iteritems()
  function compat_itervalues (line 48) | def compat_itervalues(x): return x.itervalues()
  function compat_keys (line 49) | def compat_keys(x): return x.keys()
  function times (line 60) | def times(x):
  function percentage (line 63) | def percentage(p):
  function add (line 66) | def add(a, b):
  function fail (line 69) | def fail(a, b):
  function ratio (line 75) | def ratio(numerator, denominator):
  class UndefinedEvent (line 92) | class UndefinedEvent(Exception):
    method __init__ (line 95) | def __init__(self, event):
    method __str__ (line 99) | def __str__(self):
  class Event (line 103) | class Event(object):
    method __init__ (line 106) | def __init__(self, name, null, aggregator, formatter = str):
    method __eq__ (line 112) | def __eq__(self, other):
    method __hash__ (line 115) | def __hash__(self):
    method null (line 118) | def null(self):
    method aggregate (line 121) | def aggregate(self, val1, val2):
    method format (line 127) | def format(self, val):
  class Object (line 155) | class Object(object):
    method __init__ (line 158) | def __init__(self, events=None):
    method __hash__ (line 164) | def __hash__(self):
    method __eq__ (line 167) | def __eq__(self, other):
    method __lt__ (line 170) | def __lt__(self, other):
    method __contains__ (line 173) | def __contains__(self, event):
    method __getitem__ (line 176) | def __getitem__(self, event):
    method __setitem__ (line 182) | def __setitem__(self, event, value):
  class Call (line 190) | class Call(Object):
    method __init__ (line 196) | def __init__(self, callee_id):
  class Function (line 203) | class Function(Object):
    method __init__ (line 206) | def __init__(self, id, name):
    method add_call (line 218) | def add_call(self, call):
    method get_call (line 223) | def get_call(self, callee_id):
    method stripped_name (line 236) | def stripped_name(self):
    method __repr__ (line 260) | def __repr__(self):
  class Cycle (line 264) | class Cycle(Object):
    method __init__ (line 267) | def __init__(self):
    method add_function (line 271) | def add_function(self, function):
  class Profile (line 281) | class Profile(Object):
    method __init__ (line 284) | def __init__(self):
    method add_function (line 289) | def add_function(self, function):
    method add_cycle (line 294) | def add_cycle(self, cycle):
    method validate (line 297) | def validate(self):
    method find_cycles (line 307) | def find_cycles(self):
    method prune_root (line 327) | def prune_root(self, roots, depth=-1):
    method prune_leaf (line 349) | def prune_leaf(self, leafs, depth=-1):
    method getFunctionIds (line 378) | def getFunctionIds(self, funcName):
    method getFunctionId (line 382) | def getFunctionId(self, funcName):
    class _TarjanData (line 388) | class _TarjanData:
      method __init__ (line 389) | def __init__(self, order):
    method _tarjan (line 394) | def _tarjan(self, function, order, stack, data):
    method call_ratios (line 435) | def call_ratios(self, event):
    method integrate (line 476) | def integrate(self, outevent, inevent):
    method _integrate_function (line 509) | def _integrate_function(self, function, outevent, inevent):
    method _integrate_call (line 521) | def _integrate_call(self, call, outevent, inevent):
    method _integrate_cycle (line 529) | def _integrate_cycle(self, cycle, outevent, inevent):
    method _rank_cycle_function (line 574) | def _rank_cycle_function(self, cycle, function, ranks):
    method _call_ratios_cycle (line 623) | def _call_ratios_cycle(self, cycle, function, ranks, call_ratios, visi...
    method _integrate_cycle_function (line 634) | def _integrate_cycle_function(self, cycle, function, partial_ratio, pa...
    method aggregate (line 660) | def aggregate(self, event):
    method ratio (line 671) | def ratio(self, outevent, inevent):
    method prune (line 684) | def prune(self, node_thres, edge_thres, paths, color_nodes_by_selftime):
    method dump (line 743) | def dump(self):
    method _dump_events (line 757) | def _dump_events(self, events):
  class Struct (line 767) | class Struct:
    method __init__ (line 770) | def __init__(self, attrs = None):
    method __getattr__ (line 775) | def __getattr__(self, name):
    method __setattr__ (line 781) | def __setattr__(self, name, value):
    method __str__ (line 784) | def __str__(self):
    method __repr__ (line 787) | def __repr__(self):
  class ParseError (line 791) | class ParseError(Exception):
    method __init__ (line 794) | def __init__(self, msg, line):
    method __str__ (line 800) | def __str__(self):
  class Parser (line 804) | class Parser:
    method __init__ (line 810) | def __init__(self):
    method parse (line 813) | def parse(self):
  class JsonParser (line 817) | class JsonParser(Parser):
    method __init__ (line 824) | def __init__(self, stream):
    method parse (line 828) | def parse(self):
  class LineParser (line 891) | class LineParser(Parser):
    method __init__ (line 894) | def __init__(self, stream):
    method readline (line 901) | def readline(self):
    method lookahead (line 916) | def lookahead(self):
    method consume (line 920) | def consume(self):
    method eof (line 926) | def eof(self):
  class XmlToken (line 934) | class XmlToken:
    method __init__ (line 936) | def __init__(self, type, name_or_data, attrs = None, line = None, colu...
    method __str__ (line 944) | def __str__(self):
  class XmlTokenizer (line 956) | class XmlTokenizer:
    method __init__ (line 959) | def __init__(self, fp, skip_ws = True):
    method handle_element_start (line 974) | def handle_element_start(self, name, attributes):
    method handle_element_end (line 980) | def handle_element_end(self, name):
    method handle_character_data (line 986) | def handle_character_data(self, data):
    method finish_character_data (line 991) | def finish_character_data(self):
    method next (line 999) | def next(self):
    method pos (line 1015) | def pos(self):
  class XmlTokenMismatch (line 1019) | class XmlTokenMismatch(Exception):
    method __init__ (line 1021) | def __init__(self, expected, found):
    method __str__ (line 1026) | def __str__(self):
  class XmlParser (line 1030) | class XmlParser(Parser):
    method __init__ (line 1033) | def __init__(self, fp):
    method consume (line 1038) | def consume(self):
    method match_element_start (line 1041) | def match_element_start(self, name):
    method match_element_end (line 1044) | def match_element_end(self, name):
    method element_start (line 1047) | def element_start(self, name):
    method element_end (line 1058) | def element_end(self, name):
    method character_data (line 1067) | def character_data(self, strip = True):
  class GprofParser (line 1077) | class GprofParser(Parser):
    method __init__ (line 1087) | def __init__(self, fp):
    method readline (line 1093) | def readline(self):
    method translate (line 1104) | def translate(self, mo):
    method parse_function_entry (line 1177) | def parse_function_entry(self, lines):
    method parse_cycle_entry (line 1224) | def parse_cycle_entry(self, lines):
    method parse_cg_entry (line 1246) | def parse_cg_entry(self, lines):
    method parse_cg (line 1252) | def parse_cg(self):
    method parse (line 1273) | def parse(self):
  class AXEParser (line 1357) | class AXEParser(Parser):
    method __init__ (line 1360) | def __init__(self, fp):
    method readline (line 1366) | def readline(self):
    method translate (line 1377) | def translate(self, mo):
    method parse_function_entry (line 1439) | def parse_function_entry(self, lines):
    method parse_cycle_entry (line 1486) | def parse_cycle_entry(self, lines):
    method parse_cg_entry (line 1525) | def parse_cg_entry(self, lines):
    method parse_cg (line 1531) | def parse_cg(self):
    method parse (line 1550) | def parse(self):
  class CallgrindParser (line 1618) | class CallgrindParser(LineParser):
    method __init__ (line 1627) | def __init__(self, infile):
    method parse (line 1646) | def parse(self):
    method parse_part (line 1667) | def parse_part(self):
    method parse_header_line (line 1678) | def parse_header_line(self):
    method parse_part_detail (line 1690) | def parse_part_detail(self):
    method parse_description (line 1693) | def parse_description(self):
    method parse_event_specification (line 1696) | def parse_event_specification(self):
    method parse_cost_line_def (line 1702) | def parse_cost_line_def(self):
    method parse_cost_summary (line 1717) | def parse_cost_summary(self):
    method parse_body_line (line 1723) | def parse_body_line(self):
    method parse_cost_line (line 1737) | def parse_cost_line(self, calls=None):
    method parse_association_spec (line 1796) | def parse_association_spec(self):
    method parse_position_spec (line 1841) | def parse_position_spec(self):
    method parse_empty (line 1864) | def parse_empty(self):
    method parse_comment (line 1873) | def parse_comment(self):
    method parse_key (line 1882) | def parse_key(self, key):
    method parse_keys (line 1889) | def parse_keys(self, keys):
    method make_function (line 1901) | def make_function(self, module, filename, name):
    method get_function (line 1916) | def get_function(self):
    method get_callee (line 1922) | def get_callee(self):
    method readline (line 1928) | def readline(self):
  class PerfParser (line 1936) | class PerfParser(LineParser):
    method __init__ (line 1945) | def __init__(self, infile):
    method readline (line 1949) | def readline(self):
    method parse (line 1956) | def parse(self):
    method parse_event (line 1988) | def parse_event(self):
    method parse_callchain (line 2020) | def parse_callchain(self):
    method parse_call (line 2034) | def parse_call(self):
  class OprofileParser (line 2066) | class OprofileParser(LineParser):
    method __init__ (line 2082) | def __init__(self, infile):
    method add_entry (line 2087) | def add_entry(self, callers, function, callees):
    method update_subentries_dict (line 2098) | def update_subentries_dict(self, totals, partials):
    method parse (line 2107) | def parse(self):
    method parse_header (line 2151) | def parse_header(self):
    method parse_entry (line 2160) | def parse_entry(self):
    method parse_subentries (line 2169) | def parse_subentries(self):
    method parse_subentry (line 2176) | def parse_subentry(self):
    method skip_separator (line 2211) | def skip_separator(self):
    method match_header (line 2216) | def match_header(self):
    method match_separator (line 2220) | def match_separator(self):
    method match_primary (line 2224) | def match_primary(self):
    method match_secondary (line 2228) | def match_secondary(self):
  class HProfParser (line 2233) | class HProfParser(LineParser):
    method __init__ (line 2243) | def __init__(self, infile):
    method parse (line 2248) | def parse(self):
    method parse_traces (line 2301) | def parse_traces(self):
    method parse_trace (line 2305) | def parse_trace(self):
    method parse_samples (line 2324) | def parse_samples(self):
  class SysprofParser (line 2334) | class SysprofParser(XmlParser):
    method __init__ (line 2336) | def __init__(self, stream):
    method parse (line 2339) | def parse(self):
    method parse_items (line 2357) | def parse_items(self, name):
    method parse_item (line 2368) | def parse_item(self, name):
    method parse_values (line 2375) | def parse_values(self):
    method parse_value (line 2384) | def parse_value(self, tag):
    method build_profile (line 2394) | def build_profile(self, objects, nodes):
  class XPerfParser (line 2451) | class XPerfParser(Parser):
    method __init__ (line 2455) | def __init__(self, stream):
    method parse (line 2462) | def parse(self):
    method parse_header (line 2490) | def parse_header(self, row):
    method parse_row (line 2496) | def parse_row(self, row):
    method get_function (line 2542) | def get_function(self, process, symbol):
  class SleepyParser (line 2558) | class SleepyParser(Parser):
    method __init__ (line 2568) | def __init__(self, filename):
    method openEntry (line 2588) | def openEntry(self, name):
    method parse_symbols (line 2597) | def parse_symbols(self):
    method parse_callstacks (line 2617) | def parse_callstacks(self):
    method parse (line 2644) | def parse(self):
  class PstatsParser (line 2661) | class PstatsParser:
    method __init__ (line 2667) | def __init__(self, *filename):
    method get_function_name (line 2680) | def get_function_name(self, key):
    method get_function (line 2686) | def get_function(self, key):
    method parse (line 2700) | def parse(self):
  class Theme (line 2763) | class Theme:
    method __init__ (line 2765) | def __init__(self,
    method graph_bgcolor (line 2791) | def graph_bgcolor(self):
    method graph_fontname (line 2794) | def graph_fontname(self):
    method graph_fontcolor (line 2797) | def graph_fontcolor(self):
    method graph_fontsize (line 2800) | def graph_fontsize(self):
    method node_bgcolor (line 2803) | def node_bgcolor(self, weight):
    method node_fgcolor (line 2806) | def node_fgcolor(self, weight):
    method node_fontsize (line 2812) | def node_fontsize(self, weight):
    method node_style (line 2815) | def node_style(self):
    method edge_color (line 2818) | def edge_color(self, weight):
    method edge_fontsize (line 2821) | def edge_fontsize(self, weight):
    method edge_penwidth (line 2824) | def edge_penwidth(self, weight):
    method edge_arrowsize (line 2827) | def edge_arrowsize(self, weight):
    method fontsize (line 2830) | def fontsize(self, weight):
    method color (line 2833) | def color(self, weight):
    method hsl_to_rgb (line 2853) | def hsl_to_rgb(self, h, s, l):
    method _hue_to_rgb (line 2880) | def _hue_to_rgb(self, m1, m2, h):
  function sorted_iteritems (line 2941) | def sorted_iteritems(d):
  class DotWriter (line 2950) | class DotWriter:
    method __init__ (line 2961) | def __init__(self, fp):
    method wrap_function_name (line 2964) | def wrap_function_name(self, name):
    method graph (line 2984) | def graph(self, profile, theme):
    method begin_graph (line 3070) | def begin_graph(self):
    method end_graph (line 3073) | def end_graph(self):
    method attr (line 3076) | def attr(self, what, **attrs):
    method node (line 3082) | def node(self, node, **attrs):
    method edge (line 3088) | def edge(self, src, dst, **attrs):
    method attr_list (line 3096) | def attr_list(self, attrs):
    method id (line 3113) | def id(self, id):
    method color (line 3125) | def color(self, rgb):
    method escape (line 3137) | def escape(self, s):
    method write (line 3146) | def write(self, s):
  function naturalJoin (line 3155) | def naturalJoin(values):
  function main (line 3163) | def main():

FILE: scripts/run.py
  function route (line 46) | def route():
  function evaluate (line 60) | def evaluate():
  function view (line 86) | def view():

FILE: scripts/run_base.py
  function run (line 4) | def run(command):
  class Benchmark (line 19) | class Benchmark:
    method __init__ (line 20) | def __init__(self, full_name, abbr_name):
    method __repr__ (line 23) | def __repr__(self):
  class Benchmarks (line 26) | class Benchmarks:
    method __init__ (line 27) | def __init__(self):
    method add (line 31) | def add(self, full_name_pat, abbr_name_pat, ids):
    method get_bm (line 35) | def get_bm(self, name):
    method add_set (line 43) | def add_set(self, set_name, bm_names):
    method get_choices (line 49) | def get_choices(self):
    method get_selected (line 59) | def get_selected(self, names):

FILE: src/db/CutLayer.cpp
  type db (line 4) | namespace db {
    function ostream (line 113) | ostream& CutLayer::printBasics(ostream& os) const {
    function ostream (line 124) | ostream& CutLayer::printDesignRules(ostream& os) const {
    function ostream (line 129) | ostream& CutLayer::printViaOccupancyLUT(ostream& os) const {
    function ostream (line 163) | ostream& operator<<(ostream& os, const CutLayer& layer) { return layer...

FILE: src/db/CutLayer.h
  function namespace (line 5) | namespace db {

FILE: src/db/Database.cpp
  type db (line 6) | namespace db {
  function MTStat (line 299) | MTStat runJobsMT(int numJobs, const std::function<void(int)>& handle) {

FILE: src/db/Database.h
  function class (line 9) | class MTStat {
  function namespace (line 17) | namespace db {
  function namespace (line 44) | namespace std {

FILE: src/db/GeoPrimitive.cpp
  type db (line 4) | namespace db {
    function ostream (line 12) | ostream& operator<<(ostream& os, const BoxOnLayer& box) {
    function getBoxFromRsynBounds (line 17) | utils::BoxT<DBU> getBoxFromRsynBounds(const Bounds& bounds) {
    function getBoxFromRsynGeometries (line 21) | utils::BoxT<DBU> getBoxFromRsynGeometries(const vector<Rsyn::PhysicalV...
    function ostream (line 39) | ostream& operator<<(ostream& os, const GridPoint& gp) {
    function ostream (line 46) | ostream& operator<<(ostream& os, const GridEdge& edge) {
    function ostream (line 72) | ostream& operator<<(ostream& os, const GridBoxOnLayer& gb) {
    function ostream (line 120) | ostream& operator<<(ostream& os, const TrackSegment& ts) {
    function ostream (line 127) | ostream& operator<<(ostream& os, const ViaBox& vb) {

FILE: src/db/GeoPrimitive.h
  function namespace (line 5) | namespace db {
  function class (line 36) | class GridPoint {
  function namespace (line 53) | namespace std {
  function namespace (line 65) | namespace db {
  function class (line 146) | class ViaBox {

FILE: src/db/LayerList.cpp
  type db (line 5) | namespace db {
    function BoxOnLayer (line 131) | BoxOnLayer LayerList::getMetalRectForbidRegion(const BoxOnLayer& metal...
    function GridBoxOnLayer (line 201) | GridBoxOnLayer LayerList::getSurroundingGrid(int layerIdx, utils::Poin...
    function GridBoxOnLayer (line 241) | GridBoxOnLayer LayerList::rangeSearch(const BoxOnLayer& box, bool incl...
    function BoxOnLayer (line 253) | BoxOnLayer LayerList::getLoc(const GridBoxOnLayer& gridBox) const {
    function GridPoint (line 263) | GridPoint LayerList::getUpper(const GridPoint& cur) const {
    function GridPoint (line 268) | GridPoint LayerList::getLower(const GridPoint& cur) const {
    function GridBoxOnLayer (line 273) | GridBoxOnLayer LayerList::getUpper(const GridBoxOnLayer& cur) const {
    function GridBoxOnLayer (line 286) | GridBoxOnLayer LayerList::getLower(const GridBoxOnLayer& cur) const {
    function ViaBox (line 299) | ViaBox LayerList::getViaBoxBetween(const BoxOnLayer& lower, const BoxO...

FILE: src/db/LayerList.h
  function namespace (line 7) | namespace db {

FILE: src/db/MetalLayer.cpp
  type db (line 3) | namespace db {
    function ostream (line 5) | ostream& operator<<(ostream& os, const Track& track) {
    function ostream (line 10) | ostream& operator<<(ostream& os, const CrossPoint& cp) {
    function DBU (line 213) | DBU MetalLayer::getCrossPointRangeDistCost(const utils::IntervalT<int>...
    function DBU (line 218) | DBU MetalLayer::getCrossPointRangeDist(const utils::IntervalT<int>& cr...
    function BoxOnLayer (line 246) | BoxOnLayer MetalLayer::getLoc(const GridBoxOnLayer& gridBox) const {
    function GridPoint (line 255) | GridPoint MetalLayer::getUpper(const GridPoint& cur) const {
    function GridPoint (line 259) | GridPoint MetalLayer::getLower(const GridPoint& cur) const {
    function DBU (line 272) | DBU MetalLayer::getParaRunSpace(const DBU width, const DBU length) con...
    function DBU (line 285) | DBU MetalLayer::getParaRunSpace(const utils::BoxT<DBU>& targetMetal, c...
    function DBU (line 289) | DBU MetalLayer::getSpace(const utils::BoxT<DBU>& targetMetal, int dir,...
    function DBU (line 308) | DBU MetalLayer::getEolSpace(const DBU width) const { return (width < m...
    function DBU (line 324) | DBU MetalLayer::getCornerSpace(const DBU width) const {
    function DBU (line 334) | DBU MetalLayer::getCornerSpace(const utils::BoxT<DBU>& targetMetal) co...
    function ostream (line 357) | ostream& MetalLayer::printBasics(ostream& os) const {
    function ostream (line 366) | ostream& MetalLayer::printDesignRules(ostream& os) const {
    function ostream (line 381) | ostream& MetalLayer::printViaOccupancyLUT(ostream& os) const {
    function ostream (line 413) | ostream& operator<<(ostream& os, const MetalLayer& layer) { return lay...

FILE: src/db/MetalLayer.h
  function namespace (line 5) | namespace db {

FILE: src/db/Net.cpp
  type db (line 7) | namespace db {
    function BoxOnLayer (line 11) | BoxOnLayer NetBase::getMaxAccessBox(int pinIdx) const {

FILE: src/db/Net.h
  function namespace (line 6) | namespace db {

FILE: src/db/RouteGrid.cpp
  type db (line 3) | namespace db {
    function DBU (line 116) | DBU RouteGrid::getOvlpFixedMetalArea(const BoxOnLayer& box, int netIdx...

FILE: src/db/RouteGrid.h
  function namespace (line 7) | namespace db {

FILE: src/db/RsynService.h
  function namespace (line 5) | namespace db {

FILE: src/db/Setting.cpp
  type db (line 4) | namespace db {

FILE: src/db/Setting.h
  function namespace (line 5) | namespace db {

FILE: src/db/Stat.cpp
  type db (line 4) | namespace db {
    function RouteStatus (line 8) | RouteStatus operator&(const RouteStatus& lhs, const RouteStatus& rhs) {
    function RouteStatus (line 22) | RouteStatus& operator&=(RouteStatus& lhs, const RouteStatus& rhs) {
    function printWarnMsg (line 38) | void printWarnMsg(RouteStatus status, const Net& net) {

FILE: src/db/Stat.h
  function namespace (line 6) | namespace db {
  function isSucc (line 59) | constexpr bool isSucc(RouteStatus status) {
  function class (line 71) | class StageRouteStat {
  function class (line 83) | class RouteStat {

FILE: src/flute/dist.c
  function dist (line 8) | long  dist(
  function dist2 (line 28) | long  dist2(

FILE: src/flute/dl.c
  function dl_t (line 5) | dl_t dl_alloc()
  function dl_delete (line 16) | void dl_delete(dl_t dl, dl_el *el)
  function dl_clear (line 33) | void dl_clear(dl_t dl)
  function dl_concat (line 46) | void dl_concat(dl_t first_list, dl_t second_list)
  function dl_insertion_sort (line 60) | static void dl_insertion_sort(dl_t dl, size_t el_size,
  function dl_sort (line 90) | void dl_sort(dl_t dl, size_t el_size, int(*compar)(void *, void *))

FILE: src/flute/dl.h
  type dl_el (line 7) | typedef struct dl_el_s {
  type dl_s (line 11) | typedef struct {

FILE: src/flute/err.c
  function err_msg (line 9) | void  err_msg(
  function err_exit (line 21) | void  err_exit(

FILE: src/flute/flute.c
  type csoln (line 19) | struct csoln
  type csoln (line 26) | struct csoln
  type point (line 29) | struct point
  function readLUT (line 52) | void readLUT()
  function DTYPE (line 131) | DTYPE flute_wl(int d, DTYPE x[], DTYPE y[], int acc)
  function DTYPE (line 229) | DTYPE flutes_wl_RDP(int d, DTYPE xs[], DTYPE ys[], int s[], int acc)
  function DTYPE (line 257) | DTYPE flutes_wl_LD(int d, DTYPE xs[], DTYPE ys[], int s[])
  function DTYPE (line 315) | DTYPE flutes_wl_MD(int d, DTYPE xs[], DTYPE ys[], int s[], int acc)
  function orderx (line 545) | static int orderx(const void *a, const void *b)
  function ordery (line 557) | static int ordery(const void *a, const void *b)
  function Tree (line 569) | Tree flute(int d, DTYPE x[], DTYPE y[], int acc)
  function Tree (line 683) | Tree flutes_RDP(int d, DTYPE xs[], DTYPE ys[], int s[], int acc)
  function Tree (line 711) | Tree flutes_LD(int d, DTYPE xs[], DTYPE ys[], int s[])
  function Tree (line 862) | Tree flutes_MD(int d, DTYPE xs[], DTYPE ys[], int s[], int acc)
  function Tree (line 1141) | Tree dmergetree(Tree t1, Tree t2)
  function Tree (line 1187) | Tree hmergetree(Tree t1, Tree t2, int s[])
  function Tree (line 1263) | Tree vmergetree(Tree t1, Tree t2)
  function local_refinement (line 1325) | void local_refinement(Tree *tp, int p)
  function DTYPE (line 1427) | DTYPE wirelength(Tree t)
  function printtree (line 1441) | void printtree(Tree t)
  function plottree (line 1455) | void plottree(Tree t)

FILE: src/flute/flute.h
  type Branch (line 39) | typedef struct
  type Tree (line 45) | typedef struct

FILE: src/flute/flute_mst.c
  function enqueue (line 49) | void enqueue(int **q, int e)
  type node_pair (line 62) | typedef struct node_pair_s { // pair of nodes representing an edge
  function in_heap_order (line 69) | int in_heap_order(int e1, int e2)
  function sift_up (line 79) | void sift_up(int i)
  function sift_down (line 91) | void sift_down(int i)
  function insert_heap (line 118) | void insert_heap(node_pair *np)
  function extract_heap (line 128) | void extract_heap(node_pair *np)
  function init_param (line 136) | void init_param()
  function cmp_branch (line 144) | int cmp_branch(const void *a, const void *b) {
  function update_dist2 (line 161) | void update_dist2(Tree t, DTYPE **dist, DTYPE longest,
  function mst_from_heap (line 405) | void mst_from_heap(int d, DTYPE **dist, int node1, int node2, int **nb,
  function build_rmst (line 465) | void build_rmst(long d, DTYPE *x, DTYPE *y, int *edges, int *inMST)
  function Tree (line 547) | Tree flutes_c(int d, DTYPE *xs, DTYPE *ys, int *s, int acc)
  function Tree (line 590) | Tree flute_mr(int d, DTYPE *xs, DTYPE *ys, int *s,
  function Tree (line 862) | Tree flute_am(int d, DTYPE *xs, DTYPE *ys, int *s, int acc,
  function Tree (line 1069) | Tree flutes_HD(int d, DTYPE *xs, DTYPE *ys, int *s, int acc)
  function pickWin (line 1130) | int pickWin(Tree t, DTYPE cx, DTYPE cy, int inWin[])
  function Tree (line 1257) | Tree merge_into(Tree t1, Tree t2, int common[], int nc, int *o1, int *o2)
  function Tree (line 1433) | Tree smergetree(Tree t1, Tree t2, int *o1, int *o2,
  function Tree (line 1581) | Tree wmergetree(Tree t1, Tree t2, int *order1, int *order2,
  type TreeNode (line 1723) | typedef struct TreeNode_s{
  function redirect (line 1735) | void redirect(Tree t, DTYPE cx, DTYPE cy)
  function update_subtree (line 1762) | void update_subtree(TreeNode *p, int id)
  function TreeNode (line 1795) | TreeNode *createRootedTree(Tree t, int *order, int id, dl_t list_of_nodes)
  function freeTree (line 1860) | void freeTree(TreeNode *t)
  function cmpNodeByYX (line 1870) | int cmpNodeByYX(const void* a, const void* b)
  function cmpNodeByXY (line 1887) | int cmpNodeByXY(const void* a, const void* b)
  function remove_child (line 1904) | void remove_child(dl_t children_list, TreeNode* c)
  function cleanTree (line 1915) | void cleanTree(TreeNode* tn)
  function cmpNodeByOrder (line 1975) | int cmpNodeByOrder(void* a, void* b)
  function Tree (line 1985) | Tree mergeRootedTrees(TreeNode *tn1, TreeNode *tn2, int *order1)
  function collect_nodes (line 2127) | void collect_nodes(TreeNode* tn, dl_t nlist)
  type xdata (line 2151) | typedef struct {
  function cmpXdata (line 2156) | int cmpXdata(void *a, void *b)
  function TreeNode (line 2165) | TreeNode *cedge_lca(TreeNode* n1, TreeNode* n2, DTYPE *len, int *n2ton1)
  function TreeNode (line 2242) | TreeNode *critical_edge(TreeNode* n1, TreeNode* n2, DTYPE *len, int *n2t...
  function splice2 (line 2260) | void splice2(TreeNode *n1, TreeNode *n2, TreeNode *e)
  function cut_and_splice (line 2286) | void cut_and_splice(TreeNode *n1, TreeNode *n2,
  type splice_info (line 2360) | typedef struct {
  function DTYPE (line 2366) | DTYPE exchange_branches_order_x(int num_nodes, TreeNode **nodes,
  function DTYPE (line 2518) | DTYPE exchange_branches_order_y(int num_nodes, TreeNode **nodes,
  function Tree (line 2670) | Tree xmergetree(Tree t1, Tree t2, int *order1, int *order2,

FILE: src/flute/global.h
  type point (line 10) | struct point
  type Point (line 15) | typedef  struct point Point;

FILE: src/flute/heap.c
  function allocate_heap (line 20) | void  allocate_heap( long n )
  function deallocate_heap (line 36) | void  deallocate_heap()
  function heap_init (line 48) | void  heap_init( long  n )
  function heap_insert (line 63) | void  heap_insert(
  function heap_decrease_key (line 103) | void  heap_decrease_key
  function heap_delete_min (line 137) | long  heap_delete_min()

FILE: src/flute/heap.h
  type heap_info (line 6) | struct  heap_info
  type Heap (line 13) | typedef  struct heap_info  Heap;

FILE: src/flute/memAlloc.c
  function runtimeError (line 16) | void runtimeError(char error_text[])
  function free_vector (line 345) | void free_vector(float *v, long nl, long nh)
  function free_ivector (line 351) | void free_ivector(int *v, long nl, long nh)
  function free_cvector (line 357) | void free_cvector(unsigned char *v, long nl, long nh)
  function free_lvector (line 363) | void free_lvector(unsigned long *v, long nl, long nh)
  function free_dvector (line 369) | void free_dvector(double *v, long nl, long nh)
  function free_matrix (line 375) | void free_matrix(float **m, long nrl, long nrh, long ncl, long nch)
  function free_dmatrix (line 382) | void free_dmatrix(double **m, long nrl, long nrh, long ncl, long nch)
  function free_imatrix (line 389) | void free_imatrix(int **m, long nrl, long nrh, long ncl, long nch)
  function free_cmatrix (line 396) | void free_cmatrix(char **m, long nrl, long nrh, long ncl, long nch)
  function free_lmatrix (line 403) | void free_lmatrix(unsigned long **m, long nrl, long nrh, long ncl, long ...
  function free_submatrix (line 410) | void free_submatrix(float **b, long nrl, long nrh, long ncl, long nch)
  function free_convert_matrix (line 416) | void free_convert_matrix(float **b, long nrl, long nrh, long ncl, long nch)
  function free_f3tensor (line 422) | void free_f3tensor(float ***t, long nrl, long nrh, long ncl, long nch,
  function free_lmatrix3D (line 432) | void free_lmatrix3D(unsigned long ***t, long nrl, long nrh, long ncl, lo...
  function free_imatrix3D (line 442) | void free_imatrix3D(int ***t, int nrl, int nrh, int ncl, int nch,
  function comp_float (line 452) | int comp_float(const void *i, const void *j) {
  function comp_int (line 462) | int comp_int(const void *i, const void *j) {

FILE: src/flute/mst2.c
  function mst2_package_init (line 12) | void  mst2_package_init( long  n )
  function mst2_package_done (line 22) | void  mst2_package_done()
  function mst2 (line 32) | void  mst2

FILE: src/flute/neighbors.c
  function allocate_nn_arrays (line 32) | void  allocate_nn_arrays( long  n )
  function deallocate_nn_arrays (line 53) | void  deallocate_nn_arrays()
  function compare_x (line 84) | static  int compare_x
  function ne_sw_combine (line 111) | void  ne_sw_combine
  function ne_sw_nearest_neighbors (line 301) | void  ne_sw_nearest_neighbors
  function dq_nearest_neighbors (line 336) | void  dq_nearest_neighbors
  function octant (line 390) | long  octant
  function brute_force_nearest_neighbors (line 415) | void  brute_force_nearest_neighbors
  function check_nn (line 467) | void  check_nn

FILE: src/gr_db/GCell.cpp
  type gr (line 3) | namespace gr {
    function GrBoxOnLayer (line 49) | GrBoxOnLayer GCellGrid::rangeSearchGCell(const db::BoxOnLayer &box) co...

FILE: src/gr_db/GCell.h
  function namespace (line 8) | namespace gr {

FILE: src/gr_db/GrDatabase.cpp
  type gr (line 6) | namespace gr {

FILE: src/gr_db/GrDatabase.h
  function namespace (line 8) | namespace gr {

FILE: src/gr_db/GrGeoPrimitive.cpp
  type gr (line 3) | namespace gr {
    function ostream (line 10) | ostream& operator<<(ostream& os, const GrPoint& gp) {
    function ostream (line 25) | ostream& operator<<(ostream& os, const PointOnLayer& gp) {
    function ostream (line 32) | ostream& operator<<(ostream& os, const GrEdge& edge) {
    function ostream (line 45) | ostream& operator<<(ostream& os, const GrBoxOnLayer& gb) {

FILE: src/gr_db/GrGeoPrimitive.h
  function namespace (line 6) | namespace gr {
  function class (line 23) | class PointOnLayer : public utils::PointT<int> {
  function class (line 37) | class GrEdge {
  function DBU (line 86) | DBU getGrLen() const {
  function class (line 103) | class GrBoxOnLayer : public utils::BoxT<int> {
  function namespace (line 125) | namespace std {
  function PointOnLayer (line 147) | struct hash<gr::PointOnLayer> {

FILE: src/gr_db/GrNet.cpp
  type gr (line 4) | namespace gr {
    function DBU (line 156) | DBU GrNet::getWirelength() const {

FILE: src/gr_db/GrNet.h
  function namespace (line 8) | namespace gr {

FILE: src/gr_db/GrRouteGrid.cpp
  type gr (line 6) | namespace gr {
    function DBU (line 132) | DBU GrRouteGrid::getFixedLength(const GrEdge& edge) const {  // get av...

FILE: src/gr_db/GrRouteGrid.h
  function namespace (line 7) | namespace gr {

FILE: src/gr_db/GridTopo.cpp
  type gr (line 3) | namespace gr {
    function ostream (line 112) | ostream& operator<<(ostream& os, const GrSteiner& node) {

FILE: src/gr_db/GridTopo.h
  function namespace (line 5) | namespace gr {

FILE: src/main.cpp
  function signalHandler (line 10) | void signalHandler(int signum) {
  function runISPD18Flow (line 20) | void runISPD18Flow(const boost::program_options::variables_map& vm) {
  function main (line 121) | int main(int argc, char* argv[]) {

FILE: src/multi_net/CongestionMap.h
  function class (line 7) | class CongestionMap {

FILE: src/multi_net/Router.cpp
  function MTStat (line 10) | const MTStat& MTStat::operator+=(const MTStat& rhs) {
  function ostream (line 22) | ostream& operator<<(ostream& os, const MTStat mtStat) {

FILE: src/multi_net/Router.h
  function class (line 8) | class Router {

FILE: src/multi_net/Scheduler.h
  function class (line 5) | class Scheduler {

FILE: src/single_net/GenGuide.h
  function class (line 4) | class GuideGenerator {
  function class (line 20) | class GuideGeneratorStat {

FILE: src/single_net/GridGraph.cpp
  function switchLayer (line 53) | bool switchLayer(EdgeDirection direction) { return direction == UP || di...
  function EdgeDirection (line 55) | EdgeDirection getOppDir(EdgeDirection direction) { return oppDirections[...

FILE: src/single_net/GridGraph.h
  type EdgeDirection (line 7) | enum EdgeDirection { BACKWARD = 0, FORWARD = 1, UP = 2, DOWN = 3 }
  function class (line 19) | class GridGraph {
  function class (line 57) | class GridGraphBuilderBase {
  function class (line 68) | class GuideGridGraphBuilder : public GridGraphBuilderBase {
  function class (line 86) | class CoarseGridGraphBuilder : public GridGraphBuilderBase {

FILE: src/single_net/InitRoute.cpp
  type hash_tuple (line 7) | struct hash_tuple {  // hash binary tuple

FILE: src/single_net/InitRoute.h
  function class (line 13) | class RouteNode {

FILE: src/single_net/MazeRoute.cpp
  function ostream (line 3) | ostream &operator<<(ostream &os, const Solution &sol) {

FILE: src/single_net/MazeRoute.h
  function class (line 6) | class Solution {
  function class (line 17) | class MazeRoute {

FILE: src/single_net/SingleNetRouter.h
  function class (line 9) | class SingleNetRouter {

FILE: src/utils/enum.h
  function namespace (line 267) | namespace better_enums {
  function BETTER_ENUMS_CONSTEXPR_ (line 428) | BETTER_ENUMS_CONSTEXPR_ inline char
  function BETTER_ENUMS_CONSTEXPR_ (line 434) | BETTER_ENUMS_CONSTEXPR_ inline char _to_lower_ascii(char c)
  function _trim_names (line 462) | inline void _trim_names(const char * const *raw_names,
  function namespace (line 1130) | namespace better_enums {
  function wchar_t (line 1158) | struct map_compare<const wchar_t*> {

FILE: src/utils/geo.h
  function namespace (line 14) | namespace utils {
  function Set (line 88) | void Set() {
  function Set (line 93) | void Set(T val) {
  function Set (line 97) | void Set(T lo, T hi) {
  function Update (line 108) | void Update(T newVal) {
  function FastUpdate (line 112) | void FastUpdate(T newVal) {
  function IntervalT (line 127) | IntervalT UnionWith(const IntervalT& rhs) const {
  function IntervalT (line 136) | IntervalT IntersectWith(const IntervalT& rhs) const {
  function HasIntersectWith (line 139) | bool HasIntersectWith(const IntervalT& rhs) const { return IntersectWith...
  function HasStrictIntersectWith (line 140) | bool HasStrictIntersectWith(const IntervalT& rhs) const { return Interse...
  function T (line 142) | T ParaRunLength(const IntervalT& rhs) const { return IntersectWith(rhs)....
  function Contain (line 144) | bool Contain(int val) const { return val >= low && val <= high; }
  function StrictlyContain (line 145) | bool StrictlyContain(int val) const { return val > low && val < high; }
  function T (line 147) | T GetNearestPointTo(T val) const {
  function IntervalT (line 156) | IntervalT GetNearestPointsTo(IntervalT val) const {
  function ShiftBy (line 166) | void ShiftBy(const T& rhs) {
  function Set (line 220) | void Set() {
  function Set (line 224) | void Set(T xVal, T yVal) {
  function Set (line 228) | void Set(const PointT<T>& pt) { Set(pt.x, pt.y); }
  function Set (line 229) | void Set(T lx, T ly, T hx, T hy) {
  function Set (line 233) | void Set(const IntervalT<T>& xRange, const IntervalT<T>& yRange) {
  function Set (line 237) | void Set(const PointT<T>& low, const PointT<T>& high) { Set(low.x, low.y...
  function Set (line 238) | void Set(const BoxT<T>& box) { Set(box.x, box.y); }
  function IntervalT (line 257) | const IntervalT<T>& operator[](unsigned i) const {
  function Update (line 263) | void Update(T xVal, T yVal) {
  function FastUpdate (line 267) | void FastUpdate(T xVal, T yVal) {
  function Update (line 271) | void Update(const PointT<T>& pt) { Update(pt.x, pt.y); }
  function FastUpdate (line 272) | void FastUpdate(const PointT<T>& pt) { FastUpdate(pt.x, pt.y); }
  function BoxT (line 275) | BoxT UnionWith(const BoxT& rhs) const { return {x.UnionWith(rhs.x), y.Un...
  function BoxT (line 276) | BoxT IntersectWith(const BoxT& rhs) const { return {x.IntersectWith(rhs....
  function HasIntersectWith (line 277) | bool HasIntersectWith(const BoxT& rhs) const { return IntersectWith(rhs)...
  function HasStrictIntersectWith (line 278) | bool HasStrictIntersectWith(const BoxT& rhs) const { return IntersectWit...
  function Contain (line 279) | bool Contain(const PointT<T>& pt) const { return x.Contain(pt.x) && y.Co...
  function StrictlyContain (line 280) | bool StrictlyContain(const PointT<T>& pt) const { return x.StrictlyConta...
  function BoxT (line 282) | BoxT GetNearestPointsTo(BoxT val) const { return {x.GetNearestPointsTo(v...
  function ShiftBy (line 284) | void ShiftBy(const PointT<T>& rhs) {
  function operator (line 289) | bool operator==(const BoxT& rhs) const { return (x == rhs.x) && (y == rh...
  function operator (line 290) | bool operator!=(const BoxT& rhs) const { return !(*this == rhs); }

FILE: src/utils/log.cpp
  type utils (line 14) | namespace utils {
    type rusage (line 53) | struct rusage

FILE: src/utils/log.h
  function namespace (line 18) | namespace utils {

FILE: src/utils/prettyprint.h
  function namespace (line 17) | namespace utils {
  type custom_delims_base (line 203) | struct custom_delims_base {
  function t (line 210) | t(t_) {}
  function namespace (line 239) | namespace std {
Condensed preview — 391 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,786K chars).
[
  {
    "path": ".gitignore",
    "chars": 52,
    "preview": ".vscode\nbuild\ndebug\nrun*/\nscripts/__pycache__\ntags\n\n"
  },
  {
    "path": "LICENSE",
    "chars": 2165,
    "preview": "READ THIS LICENSE AGREEMENT CAREFULLY BEFORE USING THIS PRODUCT. BY USING THIS PRODUCT YOU INDICATE YOUR ACCEPTANCE OF T"
  },
  {
    "path": "README.md",
    "chars": 9407,
    "preview": "CUGR\n======================================\nCUGR is a VLSI global routing tool developed by the research team supervised"
  },
  {
    "path": "ispd18eval/README",
    "chars": 1552,
    "preview": "Prerequisite\n------------\nPlease make sure you have Innovus installed and the path to Innovus is added to your $PATH env"
  },
  {
    "path": "ispd18eval/ispd18eval.sh",
    "chars": 1698,
    "preview": "#!/bin/sh\n\nif [ $# -eq 0 ] ; then\n    echo \"$0 -lef <input LEF> -guide <guide file> -def <routed DEF>\"\n    echo \"example"
  },
  {
    "path": "ispd18eval/ispd18eval.tcl",
    "chars": 1888,
    "preview": "\nproc evaluate { inputLef outputDef evalGeoRpt evalConRpt } {\n    setMultiCpuUsage -localCpu 8\n    loadDesign $inputLef "
  },
  {
    "path": "ispd18eval/ispd18eval.w",
    "chars": 226,
    "preview": "Wire            0.5\nVia             2.0\nOutOfGuideWire  1.0\nOutOfGuideVia   1.0\nOffTrackWire    0.5\nOffTrackVia     1.0\n"
  },
  {
    "path": "ispd19eval/README",
    "chars": 1658,
    "preview": "Prerequisite\n------------\nPlease make sure you have Innovus installed and the path to Innovus is added to your $PATH env"
  },
  {
    "path": "ispd19eval/ispd19eval.sh",
    "chars": 3184,
    "preview": "#!/bin/sh\n\nif [ $# -eq 0 ] ; then\n    echo \"$0 -lef <input LEF> -guide <guide file> -idef <input DEF> -odef <routed DEF>"
  },
  {
    "path": "ispd19eval/ispd19eval.tcl",
    "chars": 1056,
    "preview": "setMultiCpuUsage -localCpu 8\nproc evaluate { inputLef inputDef outputDef evalGeoRpt evalConRpt } {\n\n    loadDesign $inpu"
  },
  {
    "path": "ispd19eval/ispd19eval.w",
    "chars": 357,
    "preview": "Wire            0.5\nSingleCutVia    4.0\nMultiCutVia     2.0\nOutOfGuideWire  1.0\nOutOfGuideVia   1.0\nOffTrackWire    0.5\n"
  },
  {
    "path": "rsyn/.gitrepo",
    "chars": 396,
    "preview": "; DO NOT EDIT (unless you know what you are doing)\n;\n; This subdirectory is a git \"subrepo\", and this file is maintained"
  },
  {
    "path": "rsyn/LICENSE",
    "chars": 10173,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "rsyn/README.md",
    "chars": 114,
    "preview": "\n#### This is a subrepository. Please go to the [rsyn-x](https://github.com/rsyn/rsyn-x) for the main repository.\n"
  },
  {
    "path": "rsyn/include/def5.8/defiAlias.hpp",
    "chars": 1748,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiAssertion.hpp",
    "chars": 4229,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiBlockage.hpp",
    "chars": 4124,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiComponent.hpp",
    "chars": 7895,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiDebug.hpp",
    "chars": 1874,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiDefs.hpp",
    "chars": 5781,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiFPC.hpp",
    "chars": 2954,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiFill.hpp",
    "chars": 3626,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiGroup.hpp",
    "chars": 3122,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiIOTiming.hpp",
    "chars": 3347,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiKRDefs.hpp",
    "chars": 1493,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiMisc.hpp",
    "chars": 2239,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiNet.hpp",
    "chars": 18049,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiNonDefault.hpp",
    "chars": 4352,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiPartition.hpp",
    "chars": 4353,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiPath.hpp",
    "chars": 4845,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiPinCap.hpp",
    "chars": 15935,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiPinProp.hpp",
    "chars": 2478,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiProp.hpp",
    "chars": 3033,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiPropType.hpp",
    "chars": 1942,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiRegion.hpp",
    "chars": 2831,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiRowTrack.hpp",
    "chars": 4262,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiScanchain.hpp",
    "chars": 5311,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiSite.hpp",
    "chars": 3099,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiSlot.hpp",
    "chars": 2403,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiTimingDisable.hpp",
    "chars": 2842,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiUser.hpp",
    "chars": 2689,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiUtil.hpp",
    "chars": 1662,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defiVia.hpp",
    "chars": 4903,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defrCallBacks.hpp",
    "chars": 5577,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defrData.hpp",
    "chars": 9582,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defrReader.hpp",
    "chars": 29560,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defrSettings.hpp",
    "chars": 4028,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defwWriter.hpp",
    "chars": 74760,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defwWriterCalls.hpp",
    "chars": 7969,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/def5.8/defzlib.hpp",
    "chars": 2477,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefiArray.hpp",
    "chars": 3896,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefiCrossTalk.hpp",
    "chars": 5395,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefiDebug.hpp",
    "chars": 1674,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefiDefs.hpp",
    "chars": 5749,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefiEncryptInt.hpp",
    "chars": 1604,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefiKRDefs.hpp",
    "chars": 1481,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefiLayer.hpp",
    "chars": 37180,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefiMacro.hpp",
    "chars": 25386,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefiMisc.hpp",
    "chars": 10220,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefiNonDefault.hpp",
    "chars": 5743,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefiProp.hpp",
    "chars": 3069,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefiPropType.hpp",
    "chars": 1948,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefiUnits.hpp",
    "chars": 2701,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefiUser.hpp",
    "chars": 2057,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefiUtil.hpp",
    "chars": 1770,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefiVia.hpp",
    "chars": 7540,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefiViaRule.hpp",
    "chars": 5382,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefrCallBacks.hpp",
    "chars": 4007,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefrData.hpp",
    "chars": 8585,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefrReader.hpp",
    "chars": 24082,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefrSettings.hpp",
    "chars": 4444,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefwWriter.hpp",
    "chars": 99141,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefwWriterCalls.hpp",
    "chars": 7879,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/include/lef5.8/lefzlib.hpp",
    "chars": 1775,
    "preview": "// *****************************************************************************\n// ************************************"
  },
  {
    "path": "rsyn/src/rsyn/3rdparty/json/json.hpp",
    "chars": 346763,
    "preview": "/*\n    __ _____ _____ _____\n __|  |   __|     |   | |  JSON for Modern C++\n|  |  |__   |  |  | | | |  version 2.0.2\n|___"
  },
  {
    "path": "rsyn/src/rsyn/core/Rsyn.h",
    "chars": 10021,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/RsynTypes.h",
    "chars": 3202,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/dscp/LibraryCell.h",
    "chars": 3290,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/dscp/LibraryModule.h",
    "chars": 1649,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/infra/Attribute.h",
    "chars": 14800,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/infra/Exception.h",
    "chars": 3459,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/infra/List.h",
    "chars": 10980,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/infra/Observer.h",
    "chars": 1686,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/infra/RangeBasedLoop.h",
    "chars": 5777,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/infra/RawPointer.h",
    "chars": 2253,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/data/Arc.h",
    "chars": 1091,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/data/Cell.h",
    "chars": 667,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/data/Design.h",
    "chars": 1932,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/data/Instance.h",
    "chars": 1786,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/data/Library.h",
    "chars": 716,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/data/LibraryArc.h",
    "chars": 957,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/data/LibraryCell.h",
    "chars": 1437,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/data/LibraryModule.h",
    "chars": 769,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/data/LibraryPin.h",
    "chars": 972,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/data/Module.h",
    "chars": 1461,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/data/Net.h",
    "chars": 1520,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/data/Object.h",
    "chars": 680,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/data/Pin.h",
    "chars": 1471,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/data/Port.h",
    "chars": 666,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/decl/Arc.h",
    "chars": 3202,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/decl/Cell.h",
    "chars": 1842,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/decl/Design.h",
    "chars": 18606,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/decl/Instance.h",
    "chars": 10556,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/decl/Library.h",
    "chars": 1472,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/decl/LibraryArc.h",
    "chars": 2068,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/decl/LibraryCell.h",
    "chars": 5989,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/decl/LibraryModule.h",
    "chars": 1308,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/decl/LibraryPin.h",
    "chars": 2637,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/decl/Module.h",
    "chars": 8104,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/decl/Net.h",
    "chars": 5101,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/decl/Object.h",
    "chars": 674,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/decl/Pin.h",
    "chars": 6756,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/decl/Port.h",
    "chars": 2109,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/impl/Arc.h",
    "chars": 3576,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/impl/Cell.h",
    "chars": 1506,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/impl/Design.h",
    "chars": 31145,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/impl/Instance.h",
    "chars": 16205,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/impl/Library.h",
    "chars": 795,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/impl/LibraryArc.h",
    "chars": 2348,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/impl/LibraryCell.h",
    "chars": 9390,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/impl/LibraryModule.h",
    "chars": 971,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/impl/LibraryPin.h",
    "chars": 3187,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/impl/Module.h",
    "chars": 12884,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/impl/Net.h",
    "chars": 6962,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/impl/Object.h",
    "chars": 631,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/impl/Pin.h",
    "chars": 9418,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/core/obj/impl/Port.h",
    "chars": 1523,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/db/Database.cpp",
    "chars": 591,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/db/Database.h",
    "chars": 914,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/db/Serializable.h",
    "chars": 895,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/db/SerializationStream.h",
    "chars": 2235,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/export/Rsyn/DesignObserver",
    "chars": 37,
    "preview": "#include \"rsyn/core/infra/Observer.h\""
  },
  {
    "path": "rsyn/src/rsyn/export/Rsyn/PhysicalDesign",
    "chars": 36,
    "preview": "#include \"rsyn/phy/PhysicalDesign.h\""
  },
  {
    "path": "rsyn/src/rsyn/export/Rsyn/PhysicalDesignObserver",
    "chars": 44,
    "preview": "#include \"rsyn/phy/infra/PhysicalObserver.h\""
  },
  {
    "path": "rsyn/src/rsyn/export/Rsyn/Point",
    "chars": 37,
    "preview": "#include \"rsyn/util/geometry/Point.h\""
  },
  {
    "path": "rsyn/src/rsyn/export/Rsyn/Polygon",
    "chars": 39,
    "preview": "#include \"rsyn/util/geometry/Polygon.h\""
  },
  {
    "path": "rsyn/src/rsyn/export/Rsyn/Rect",
    "chars": 36,
    "preview": "#include \"rsyn/util/geometry/Rect.h\""
  },
  {
    "path": "rsyn/src/rsyn/export/Rsyn/RoutingGuide",
    "chars": 37,
    "preview": "#include \"rsyn/ispd18/RoutingGuide.h\""
  },
  {
    "path": "rsyn/src/rsyn/export/Rsyn/Scenario",
    "chars": 41,
    "preview": "#include \"rsyn/model/scenario/Scenario.h\""
  },
  {
    "path": "rsyn/src/rsyn/export/Rsyn/Session",
    "chars": 33,
    "preview": "#include \"rsyn/session/Session.h\""
  },
  {
    "path": "rsyn/src/rsyn/export/Rsyn/Timer",
    "chars": 36,
    "preview": "#include \"rsyn/model/timing/Timer.h\""
  },
  {
    "path": "rsyn/src/rsyn/io/legacy/Legacy.h",
    "chars": 2209,
    "preview": "/* Copyright 2014-2018 Rsyn\t\t\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use t"
  },
  {
    "path": "rsyn/src/rsyn/io/legacy/PlacerInternals.h",
    "chars": 5815,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/io/parser/guide-ispd18/GuideDescriptor.h",
    "chars": 1373,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/io/parser/guide-ispd18/GuideParser.cpp",
    "chars": 3460,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/io/parser/guide-ispd18/GuideParser.h",
    "chars": 1394,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/io/parser/lef_def/DEFControlParser.cpp",
    "chars": 38514,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/io/parser/lef_def/DEFControlParser.h",
    "chars": 1351,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/io/parser/lef_def/LEFControlParser.cpp",
    "chars": 20765,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/io/parser/lef_def/LEFControlParser.h",
    "chars": 969,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/io/parser/parser_helper.cpp",
    "chars": 50545,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/io/parser/parser_helper.h",
    "chars": 18663,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/io/reader/ISPD2018Reader.cpp",
    "chars": 3363,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/io/reader/ISPD2018Reader.h",
    "chars": 1182,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/io/reader/PopulateRsyn.cpp",
    "chars": 13298,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/io/reader/PopulateRsyn.h",
    "chars": 1827,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/ispd18/Guide.h",
    "chars": 2539,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/ispd18/RoutingGuide.cpp",
    "chars": 2308,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/ispd18/RoutingGuide.h",
    "chars": 1587,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/PhysicalDesign.h",
    "chars": 7930,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/PhysicalRouting.cpp",
    "chars": 11934,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/PhysicalRouting.h",
    "chars": 6234,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/PhysicalService.cpp",
    "chars": 4077,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/PhysicalService.h",
    "chars": 1441,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/infra/PhysicalAttribute.h",
    "chars": 11940,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/infra/PhysicalObserver.h",
    "chars": 1300,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/LayerViaManagerData.h",
    "chars": 1204,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalDesign.h",
    "chars": 4384,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalDieData.h",
    "chars": 1307,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalGCellData.h",
    "chars": 1416,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalGroupData.h",
    "chars": 1311,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalInstanceData.h",
    "chars": 1613,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalLayerData.h",
    "chars": 1479,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalLibraryCellData.h",
    "chars": 1449,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalLibraryPinData.h",
    "chars": 1590,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalNetData.h",
    "chars": 1142,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalObject.h",
    "chars": 1391,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalObstacleData.h",
    "chars": 1249,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalPinData.h",
    "chars": 1505,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalPinGeometryData.h",
    "chars": 1680,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalPinLayerData.h",
    "chars": 1287,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalRegionData.h",
    "chars": 1321,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalRoutingGridData.h",
    "chars": 1227,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalRoutingPointData.h",
    "chars": 1539,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalRowData.h",
    "chars": 1821,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalSiteData.h",
    "chars": 1380,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalSpacingData.h",
    "chars": 1254,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalSpacingRuleData.h",
    "chars": 1240,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalSpacingTableData.h",
    "chars": 495,
    "preview": "\n/* \n * File:   PhysicalSpacingTableData.h\n * Author: \n *\n * Created on 12/2/2018, 17:35\n */\n\n#ifndef PHYSICALDESIGN_PHY"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalSpecialNetData.h",
    "chars": 1214,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalSpecialWireData.h",
    "chars": 1310,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalTracksData.h",
    "chars": 1331,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/PhysicalViaData.h",
    "chars": 2303,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/ViaGeometryData.h",
    "chars": 986,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/data/ViaRuleData.h",
    "chars": 2198,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/decl/LayerViaManager.h",
    "chars": 1898,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/decl/PhysicalCell.h",
    "chars": 4604,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/decl/PhysicalDesign.h",
    "chars": 26012,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/decl/PhysicalDie.h",
    "chars": 2387,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  },
  {
    "path": "rsyn/src/rsyn/phy/obj/decl/PhysicalGCell.h",
    "chars": 1554,
    "preview": "/* Copyright 2014-2018 Rsyn\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use thi"
  }
]

// ... and 191 more files (download for full content)

About this extraction

This page contains the full source code of the cuhk-eda/cu-gr GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 391 files (12.9 MB), approximately 680.7k tokens, and a symbol index with 1693 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!