Git Product home page Git Product logo

open-source-pdks's Introduction

open-source-pdks's People

Contributors

mithro avatar mohanad0mohamed avatar proppy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

open-source-pdks's Issues

Move the skywater-pdk Python library into this repository and make it compatible with all the google open source PDKs

The SkyWater PDK has a Python library at https://github.com/google/skywater-pdk/tree/main/scripts/python-skywater-pdk and the documentation can be found at https://skywater-pdk.readthedocs.io/en/main/python-api/skywater_pdk.html#submodules

The library lets you do things like decode file names into human readable descriptions.

Pretty much everything in the library should work with everything that follows our naming scheme found at https://docs.google.com/document/d/1rDN5jw8sh0aTwf1jScn0nP2zy4FWLxC-82M8TL3Lbr4/edit#

Contributing document could use improvement

The CONTRIBUTING.md file in the github/docs includes a lot of the information we should include.

At a minimum we should explain;

It should still include information about the CLA process.

Write a specification for the `definition.json` files found in our open source PDKs

We should have a specification for the definition.json file found in our open source PDKs.

There is some details in https://bit.ly/open-source-pdks-naming

Example files;

We should also have a JSON schema for the format.

what is the current PDK_HASH

when i try to enable sk13o using the following commads:

PDK_HASH = 'fa87f8f4bbcc7255b6f0c0fb506960f531ae2392'
PDK_ROOT = '/root/.volare/volare/sky130/versions'

pip install --upgrade --no-cache-dir volare
volare enable --pdk sky130 {PDK_HASH}

i got following error:
Version {PDK_HASH} not found either locally or remotely.
Try volare build {PDK_HASH}.

when tried to build {PDK_HASH} it gives: Cannot update paths and switch to branch 'current' at the same time.\nDid you intend to checkout '{fa87f8f4bbcc7255b6f0c0fb506960f531ae2392}' which can not be resolved as commit?\n"
what does that mean??

Typo in ./docs/index.rst - https://github.com/google/open-source-pdks link is broken

Expected Behavior

Link to open-source-pdks should point to https://github.com/google/open-source-pdks

Actual Behavior

Link to open-source-pdks should point to https://github.com/google/open(s)-source-pdks

Steps to Reproduce the Problem

  1. https://open-source-pdks.readthedocs.io/en/latest/
  2. go to the last line "The source of the documentation can be found at https://github.com/google/opens-source-pdks"
  3. press the link

Specifications

  • Version:
  • Platform:

Include the sphinx "roles" used to improve PDK documentation to enable sharing between PDKs

The SkyWater PDK defines a bunch of "rst roles" in it's sphinx conf.py file. These include things like;

  • lib
  • cell
  • model

Which are used like this in the SkyWater PDK documentation;

:lib:`sky130_fd_io` - SKY130 IO and periphery cells (SkyWater Provided)

and like follows;

Libraries in the SKY130 PDK are named using the following scheme;

  :lib_process:`<Process name>` _ :lib_src:`<Library Source Abbreviation>` _ :lib_type:`<Library Type Abbreviation>` [_ :lib_name:`<Library Name>`]

Which results in the following colorization in the PDK documentation;
image

In the future, it would also be good if it resulted in these nodes also being clickable links to useful things.

This is useful for documenting all the PDKs which follow our naming process. We should move it into this repository and make it shared.

This is done with the following Python code;

import re
from docutils.parsers.rst import directives, roles, nodes

LIB_REGEX = re.compile('sky130_(?P<lib_src>[^_\s]*)_(?P<lib_type>[^_\s]*)(_(?P<lib_name>[^_\s]*))?')
CELL_REGEX = re.compile('sky130_(?P<lib_src>[^_\s]*)_(?P<lib_type>[^_\s]*)(_(?P<lib_name>[^_\s]*))?__(?P<cell_name>[^\s]*)')

def lib_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
    """Library name which gets colorized."""
    m = LIB_REGEX.match(text)
    if not m:
        msg = inliner.reporter.error("Malformed library name of "+repr(text), line=lineno)
        prb = inliner.problematic(rawtext, rawtext, msg)
        return [prb], [msg]
    app = inliner.document.settings.env.app

    #lib_process_role = roles.role('lib_src', inliner.language, lineno, inliner.reporter)
    #lib_src_role = roles.role('lib_src', inliner.language, lineno, inliner.reporter)
    #lib_type_role = roles.role('lib_src', inliner.language, lineno, inliner.reporter)
    #lib_name_role = roles.role('lib_src', inliner.language, lineno, inliner.reporter)
    lib_process = 'sky130'
    lib_src = m.group('lib_src')
    lib_type = m.group('lib_type')
    lib_name = m.group('lib_name')

    r = [
        nodes.inline(lib_process, lib_process, classes=['lib-process']),
        nodes.inline('_', '_', options=options),
        nodes.inline(lib_src, lib_src, classes=['lib-src']),
        nodes.inline('_', '_', options=options),
        nodes.inline(lib_type, lib_type, classes=['lib-type']),
    ]
    if lib_name:
        r.append(nodes.inline('_', '_', options=options))
        r.append(nodes.inline(lib_name, lib_name, classes=['lib-name']))

    return r, []


def cell_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
    """Cell name which gets colorized."""
    m = CELL_REGEX.match(text)
    if not m:
        msg = inliner.reporter.error("Malformed cell name of "+repr(text), line=lineno)
        prb = inliner.problematic(rawtext, rawtext, msg)
        return [prb], [msg]
    app = inliner.document.settings.env.app

    #lib_process_role = roles.role('lib_src', inliner.language, lineno, inliner.reporter)
    #lib_src_role = roles.role('lib_src', inliner.language, lineno, inliner.reporter)
    #lib_type_role = roles.role('lib_src', inliner.language, lineno, inliner.reporter)
    #lib_name_role = roles.role('lib_src', inliner.language, lineno, inliner.reporter)
    lib_process = 'sky130'
    lib_src = m.group('lib_src')
    lib_type = m.group('lib_type')
    lib_name = m.group('lib_name')
    cell_name = m.group('cell_name')

    r = [
        nodes.inline(lib_process, lib_process, classes=['lib-process']),
        nodes.inline('_', '_', options=options),
        nodes.inline(lib_src, lib_src, classes=['lib-src']),
        nodes.inline('_', '_', options=options),
        nodes.inline(lib_type, lib_type, classes=['lib-type']),
    ]
    if lib_name:
        r.append(nodes.inline('_', '_', options=options))
        r.append(nodes.inline(lib_name, lib_name, classes=['lib-name']))
    r.append(nodes.inline('__', '__', options=options))
    r.append(nodes.inline(cell_name, cell_name, classes=['cell-name']))

    return r, []


def add_role(app, new_role_name):
    options = {
        'class': directives.class_option(new_role_name),
    }
    role = roles.CustomRole(new_role_name, roles.generic_custom_role, options, "")
    app.add_role(new_role_name, role)


def setup(app):
    app.add_css_file('extra.css')
    add_role(app, 'cell_name')
    add_role(app, 'lib_process')
    add_role(app, 'lib_src')
    add_role(app, 'lib_type')
    add_role(app, 'lib_name')
    add_role(app, 'drc_rule')
    add_role(app, 'drc_tag')
    add_role(app, 'drc_flag')
    add_role(app, 'layer')

    app.add_role('lib', lib_role)
    app.add_role('cell', cell_role)
    app.add_role('model', cell_role)

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.