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:

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
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
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.