RTimothyEdwards / open_pdks

PDK installer for open-source EDA tools and toolchains. Distributed with setups for the SkyWater 130nm and Global Foundries 180nm open processes.
http://opencircuitdesign.com/open_pdks
Apache License 2.0
263 stars 85 forks source link

Handling Sky130/Magic Versions #233

Open donn opened 2 years ago

donn commented 2 years ago

This is a discussion on version ownership.

Original issue follows:

There's only a commit for open_pdks, and magic, which is an empty string.

{
    "foundry": "SW",
    "foundry-name": "SkyWater",
    "node": "sky130A",
    "feature-size": "130nm",
    "status": "active",
    "description": "Skywater 0.13um CMOS, local interconntect + high-resistance poly + 5 metal layer backend stack + MiM caps + redistribution layer 1",
    "options": [
        "METAL5",
        "MIM",
        "REDISTRIBUTION"
    ],
    "stdcells": {
    "sky130_fd_sc_hd": "ac7fb61f06e6470b94e8afdf7c25268f62fbd7b1",
    "sky130_fd_sc_hdll": "unknown",
    "sky130_fd_sc_hs": "unknown",
    "sky130_fd_sc_hvl": "4fd4f858d16c558a6a488b200649e909bb4dd800",
    "sky130_fd_sc_lp": "unknown",
    "sky130_fd_sc_ls": "unknown",
    "sky130_fd_sc_ms": "unknown",
    "sky130_osu_sc_t12": "unknown",
    "sky130_osu_sc_t15": "unknown",
    "sky130_osu_sc_t18": "unknown"
    },
    "iocells": {
        "sky130_fd_io": "01b18699b4102d8e54ad1406b3991ecb652e5aee"
    },
    "primitive": {
    "sky130_fd_pr": "f62031a1be9aefe902d6d54cddd6f59b57627436"
    },
    "memory": {
    "sky130_sram_macros": "unknown"
    },
    "other": {
    "sky130_ml_xx_hd": "6eb3b0718552b034f1bf1870285ff135e3fb2dcb"
    },
    "build": {
    "open_pdks": "1.0.291",
    "magic": "8.3.274"
    }
    "commit": {
    "open_pdks": "6e9a3661f5d836c2ccb89b57caec6f3dbe3e3999",
    "magic": ""
    }
}
donn commented 2 years ago

@RTimothyEdwards We're blocked on this.

RTimothyEdwards commented 2 years ago

Probably you need to update magic. It's picking up the commit number with magic --commit which was implemented in revision 273 (Feb. 26).

donn commented 2 years ago

Correct on that one, but sky130 is still missing.

RTimothyEdwards commented 2 years ago

Why would I put a commit hash for sky130 (by which I assume you mean the skywater-pdk top level) when nothing in the open_pdks instal comes from there? All information is pulled from the libraries, and I have a commit has for each of them.

donn commented 2 years ago

I'll be direct, Tim. I want open_pdks to explicitly ask for a version of sky130 and magic.

This whole peer dependency situation is causing me nightmares.

RTimothyEdwards commented 2 years ago

open_pdks does require a minimum version of magic through the tech file "require" line, although it could potentially be parsed up front in the configure script and spit out a message at configure time if compatibility is not met.

Otherwise, open_pdks is compatible with all versions of skywater-pdk and I'm not aware of any dependency requirement that would make sense.

donn commented 2 years ago

The upstream skywater-pdk repo does not make any guarantees as to its structure or correctness. Both projects also lack continuous integration. Meaning at any given point in time, the only guaranteed working combination has to be set in OpenLane.

I'm assuming you do not test open_pdks with every possible version of Sky130 nor do you test it with every possible version of Magic. So my request is simple. Whichever commit hashes (and I mean commit hashes, not versions, because upstream skywater-pdk lacks versions and the OpenLane dependency model requires consistency) of Magic and Sky130 you've verified working with a given commit of Open_PDKs, I would like for said values to be:

  1. Included in an industry-standard marshalled format- XML, JSON or YAML, somewhere in the repository
  2. Included in the nodeinfo.json "commit" field