Giter Site home page Giter Site logo

lap's Introduction

LAP: Layout Aware Pairing

This tool computes minimum distances between nets of a circuit layout by parsing the corresponding section of a given DEF file.

The parsing is done by the net_parsing.py package that contains the respective grammar, transformer and the generated dataclasses that store the parsed content. The tool is using Lark as an underline engine to parse the larl grammar of the NETS subsection of the DEF file.

Usage

usage: nets_finder.py [-h] -u FUNCTIONAL_UNIT -f xxx.def [-o xxx_pair.map] [-m {accurate,relaxed,insane}]

optional arguments:
  -h, --help            show this help message and exit
  -u FUNCTIONAL_UNIT, --functional_unit FUNCTIONAL_UNIT
                        Specifies the targeted functional unit
  -f xxx.def, --def_file_name xxx.def
                        Input .def file
  -o xxx_pair.map, --output_file xxx_pair.map
                        Output file 'xxx.map'
  -m {accurate,relaxed,insane}, --grouping_mode {accurate,relaxed,insane}
                        Net grouping approach
  • The -u argument is used to specify the hierarchy of a sub-module of the circuit. Only the nets, whose name matches the given one are considered for the computations that follow.
  • The -f argument specifies the input .def file.
  • The -o optional argument specifies the output file in which the results will be written. By default this file is pair.map
  • The -m argument specifies the algorithm employed for the computation of the minimum distances for each net of the functional unit.

Mode relaxed:

Relaxed is based on the assumption that the initial routing point of each net is the point in which the net "begins". It considers each net to be a point and computes the closest neighboring net ONLY in the same metal layer. This is a simplified approach.

Example:

Three routed nets (A,B,C) are depicted above with their initial routing point statement represented with the enlarged point. Color is used to distinguish between metal layers:

  • layer1: blue
  • layer2: red
  • layer3: green

Let's assume that we intend to find the closest net to net A. With the relaxed option, the tool will respond with C because it only considers points in the same metal layer and only starting point coordinates for the wiring segment.

Mode accurate:

This mode is the default. For each wiring statement of each net it computes the closest one (and thus the closest neighbour) on the same metal layer. Finally, it returns the net-pair whose corresponding wires were found to be the closest i.e., the minimum distance between wiring statements.

Example:

This is the same case as the previous one. Once again, we intend to find the closest net to net A. With the accurate option the tool will consider every point (although in the same metal layer only again) and will respond with B being the closest one i.e., point $B_{L_1,1,1}$.

Mode insane:

The insane mode is an enhancement of the previous mode. The approach is the same but each wiring segment of each net is splitted into smaller metal strips.

Example:

In the same set of nets (A,B,C) let's now assume that we intend to calculate the closest net to net B. With this option, The metal strip of net B gets broken-down to a combination of new metal strips. Each of the newly generated points (marked with yellow) are now considered as well instead of just looking at starting and ending points of the wiring statement. This approach although only concerns neighboring nets in the same metal layer only can give the most accurate results at the cost of computational time.

Notes:

  1. The SUBNET region of the nets is currently not implemented in the grammar. Parsing .def files whose net region contains such statements will result into runtime errors.
  2. The tool contains also a debug function to plot the nets of the parsed file resulting in a planar TOP view of the nets wiring per metal layer. Example:

lap's People

Contributors

akirasamadesu avatar nikosdelijohn avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

signature-ip-ai

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.