Code Monkey home page Code Monkey logo

skywater-pdk-actions's Introduction

skywater-pdk related GitHub Actions

GitHub license - Apache 2.0 Latest GitHub tag (including pre-releases) GitHub commits since latest release (v0.0)

This repository contains the GitHub actions uses with the Google skywater-pdk and related modules.

Google + SkyWater Logo Image

Actions

Modules Related

`modules-pr-backporter <./modules-pr-backporter>`__

The modules-pr-backporter action is used on the SkyWater modules (such as the standard cells) to enable automatic backporting of pull requests to older released versions.

`modules-roller <./modules-roller>`__

The modules-roller action is used by the primary SkyWater PDK repo to automatically generate pull requests which update the GitHub submodules when new changes are added to them.

CI Related

  • TODO

Resources

The latest SkyWater SKY130 PDK design resources can be viewed at the following locations:

License

The SkyWater Open Source PDK GitHub actions are released under the Apache 2.0 license.

The copyright details (which should also be found at the top of every file) are;

Copyright 2021 SkyWater PDK Authors

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.

skywater-pdk-actions's People

Contributors

agorararmard avatar donn avatar mithro avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar

skywater-pdk-actions's Issues

Is match-directories correct?

The description for match-directories says it is a regex which should match the subdirectory name under cells. See;

@click.option(
"-m",
"--match-directories",
default=".",
help="A regex that will match subdirectories under cells/."
" Default: . (matches everything.)"
)

However, the regex . should will only match a single character -- this any cell with two letters in its name (which is all of them) should not match. If you want to match anything the default regex should be .*.

Check that all standard cells in a library have all required files

Each standard cell should have a certain set of files.

Example list of files;

definition.json
sky130_fd_sc_hd__a2111o_1.cdl
sky130_fd_sc_hd__a2111o_1__ff_100C_1v65.lib.json
sky130_fd_sc_hd__a2111o_1__ff_100C_1v95.lib.json
sky130_fd_sc_hd__a2111o_1__ff_n40C_1v56.lib.json
sky130_fd_sc_hd__a2111o_1__ff_n40C_1v65.lib.json
sky130_fd_sc_hd__a2111o_1__ff_n40C_1v76.lib.json
sky130_fd_sc_hd__a2111o_1__ff_n40C_1v95_ccsnoise.lib.json
sky130_fd_sc_hd__a2111o_1.gds
sky130_fd_sc_hd__a2111o_1.lef
sky130_fd_sc_hd__a2111o_1.magic.lef
sky130_fd_sc_hd__a2111o_1.netlist.tsv
sky130_fd_sc_hd__a2111o_1.spice
sky130_fd_sc_hd__a2111o_1__ss_100C_1v40.lib.json
sky130_fd_sc_hd__a2111o_1__ss_100C_1v60.lib.json
sky130_fd_sc_hd__a2111o_1__ss_n40C_1v28.lib.json
sky130_fd_sc_hd__a2111o_1__ss_n40C_1v35.lib.json
sky130_fd_sc_hd__a2111o_1__ss_n40C_1v40.lib.json
sky130_fd_sc_hd__a2111o_1__ss_n40C_1v44.lib.json
sky130_fd_sc_hd__a2111o_1__ss_n40C_1v60_ccsnoise.lib.json
sky130_fd_sc_hd__a2111o_1__ss_n40C_1v76.lib.json
sky130_fd_sc_hd__a2111o_1.svg
sky130_fd_sc_hd__a2111o_1__tt_025C_1v80.lib.json
sky130_fd_sc_hd__a2111o_1__tt_100C_1v80.lib.json
sky130_fd_sc_hd__a2111o_1.v
sky130_fd_sc_hd__a2111o_2.cdl
sky130_fd_sc_hd__a2111o_2__ff_100C_1v65.lib.json
sky130_fd_sc_hd__a2111o_2__ff_100C_1v95.lib.json
sky130_fd_sc_hd__a2111o_2__ff_n40C_1v56.lib.json
sky130_fd_sc_hd__a2111o_2__ff_n40C_1v65.lib.json
sky130_fd_sc_hd__a2111o_2__ff_n40C_1v76.lib.json
sky130_fd_sc_hd__a2111o_2__ff_n40C_1v95_ccsnoise.lib.json
sky130_fd_sc_hd__a2111o_2.gds
sky130_fd_sc_hd__a2111o_2.lef
sky130_fd_sc_hd__a2111o_2.magic.lef
sky130_fd_sc_hd__a2111o_2.netlist.tsv
sky130_fd_sc_hd__a2111o_2.spice
sky130_fd_sc_hd__a2111o_2__ss_100C_1v40.lib.json
sky130_fd_sc_hd__a2111o_2__ss_100C_1v60.lib.json
sky130_fd_sc_hd__a2111o_2__ss_n40C_1v28.lib.json
sky130_fd_sc_hd__a2111o_2__ss_n40C_1v35.lib.json
sky130_fd_sc_hd__a2111o_2__ss_n40C_1v40.lib.json
sky130_fd_sc_hd__a2111o_2__ss_n40C_1v44.lib.json
sky130_fd_sc_hd__a2111o_2__ss_n40C_1v60_ccsnoise.lib.json
sky130_fd_sc_hd__a2111o_2__ss_n40C_1v76.lib.json
sky130_fd_sc_hd__a2111o_2.svg
sky130_fd_sc_hd__a2111o_2__tt_025C_1v80.lib.json
sky130_fd_sc_hd__a2111o_2__tt_100C_1v80.lib.json
sky130_fd_sc_hd__a2111o_2.v
sky130_fd_sc_hd__a2111o_4.cdl
sky130_fd_sc_hd__a2111o_4__ff_100C_1v65.lib.json
sky130_fd_sc_hd__a2111o_4__ff_100C_1v95.lib.json
sky130_fd_sc_hd__a2111o_4__ff_n40C_1v56.lib.json
sky130_fd_sc_hd__a2111o_4__ff_n40C_1v65.lib.json
sky130_fd_sc_hd__a2111o_4__ff_n40C_1v76.lib.json
sky130_fd_sc_hd__a2111o_4__ff_n40C_1v95_ccsnoise.lib.json
sky130_fd_sc_hd__a2111o_4.gds
sky130_fd_sc_hd__a2111o_4.lef
sky130_fd_sc_hd__a2111o_4.magic.lef
sky130_fd_sc_hd__a2111o_4.netlist.tsv
sky130_fd_sc_hd__a2111o_4.spice
sky130_fd_sc_hd__a2111o_4__ss_100C_1v40.lib.json
sky130_fd_sc_hd__a2111o_4__ss_100C_1v60.lib.json
sky130_fd_sc_hd__a2111o_4__ss_n40C_1v28.lib.json
sky130_fd_sc_hd__a2111o_4__ss_n40C_1v35.lib.json
sky130_fd_sc_hd__a2111o_4__ss_n40C_1v40.lib.json
sky130_fd_sc_hd__a2111o_4__ss_n40C_1v44.lib.json
sky130_fd_sc_hd__a2111o_4__ss_n40C_1v60_ccsnoise.lib.json
sky130_fd_sc_hd__a2111o_4__ss_n40C_1v76.lib.json
sky130_fd_sc_hd__a2111o_4.svg
sky130_fd_sc_hd__a2111o_4__tt_025C_1v80.lib.json
sky130_fd_sc_hd__a2111o_4__tt_100C_1v80.lib.json
sky130_fd_sc_hd__a2111o_4.v
sky130_fd_sc_hd__a2111o.behavioral.pp.v
sky130_fd_sc_hd__a2111o.behavioral.v
sky130_fd_sc_hd__a2111o.blackbox.v
sky130_fd_sc_hd__a2111o.functional.pp.v
sky130_fd_sc_hd__a2111o.functional.v
sky130_fd_sc_hd__a2111o.json
sky130_fd_sc_hd__a2111o.pp.blackbox.v
sky130_fd_sc_hd__a2111o.pp.symbol.svg
sky130_fd_sc_hd__a2111o.pp.symbol.v
sky130_fd_sc_hd__a2111o.schematic.svg
sky130_fd_sc_hd__a2111o.specify.v
sky130_fd_sc_hd__a2111o.symbol.svg
sky130_fd_sc_hd__a2111o.symbol.v
sky130_fd_sc_hd__a2111o.tb.v
sky130_fd_sc_hd__a2111o.v

Don't use shell commands in Python scripts

A lot of the scripts call external shell commands like like curl, grep, sed, wget.

As the scripts are in Python they can all be done natively inside the Python script. This makes it more portable and faster.

The library_multi_pull_requests.py script is a particular offender here.

Check the verilog simulation files work

  • Check with USE_POWER_PINS enabled.
  • Check with USE_POWER_PINS disable.
  • Functional vs Behavioral models?
  • Run the XXX.tb.v files?
  • Check for syntax errors using iverilog (-Wall)

DRY (Do not repeat yourself) - Branch name should be global constant

Currently the code is littered with 'pullrequest/temp/{0}/{1}/{2} like sequences. This makes it hard to quickly change the sequence. It should be something like;

GH_PULLREQUEST_NAMESPACE = 'pullrequest/temp/{pr_id}/{seq_id}/{branch}'

def myfunc(xxx):
    a = GH_PULLREQUEST_NAMESPACE.format(pr_id=pull_request_id, seq_id=0, branch='master')

Check the GDS file are valid

GDS File Properties

  • Check that the GDS files have zeroed timestamps.
  • ?????

Tooling compatibility

  • Check that the GDS files can be successfully read in by Magic.
  • Check that the GDS files can be successfully read in by KLayout.

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.