Skip to content

Latest commit

 

History

History
105 lines (79 loc) · 4.27 KB

README.md

File metadata and controls

105 lines (79 loc) · 4.27 KB

sky130_ef_ip__template

A template repository for analog designs to ensure consistency and interoperability between IP blocks.

To create a new repository with this template, click on Use this template and set your new repository name.

Note

The repository name should follow the convention:

<pdk_family>_<handle>_ip__<project> (Note the double underscore after ip.)

The handle should be a unique short identifier to prevent conflicts between any IP blocks of the same project name. This could be your initials, for example. Please changes all occurrences of sky130_ef_ip__template to your chosen repository/IP name.

The template is set up for the common open source EDA tools for analog design. This list includes magic, KLayout, xschem, ngspice, netgen and CACE.

CACE is used to run characterization on the IP. It is recommended to install all of the tools using Nix, as explained in the documentation.

Filesystem Structure

  • cace/ - CACE datasheet and files
  • docs/ - documentation generated by CACE
  • gds/ - GDSII layout
    • sky130_ef_ip__template.gds.gz
  • ip/ - IP blocks that the project depends on (not used in this simple example)
  • mag/ - magic layout
    • sky130_ef_ip__template.mag
  • xschem/ - files for xschem
    • xschemrc - project xschemrc (must be sourced)
    • sky130_ef_ip__template.sch - top level schematic
    • sky130_ef_ip__template.sym - top level symbol
    • sky130_ef_ip__template_tb.sch - top level testbench
    • sky130_ef_ip__template/ - internal symbols and schematics (not used in this simple example)
  • netlist/ - spice netlists generated by CACE
  • runs/ - run directory generated by CACE (not commited)
  • .github/actions/cace.yaml - GitHub Action to run CACE
.
├── cace - CACE datasheet and files
├── docs - documentation generated by CACE
├── gds - GDSII layout
│   └── sky130_ef_ip__template.gds.gz
├── ip - IP blocks that the project depends on (not used in this simple example)
├── LICENSE
├── mag - magic layout
│   └── sky130_ef_ip__template.mag
├── netlist - spice netlists generated by CACE
├── README.md
├── runs - run directory generated by CACE (not commited)
├── xschem - files for xschem
│   ├── sky130_ef_ip__template - project internal symbols and schematics
│   ├── sky130_ef_ip__template.sch - top level schematic
│   │   └── …
│   ├── sky130_ef_ip__template.sym - top level symbol
│   ├── sky130_ef_ip__template_tb.sch - top level testbench
│   └── xschemrc - project xschemrc (must be sourced)
├── .github
│   └── workflows
│       └── cace.yml - GitHub Action to run CACE
└── .gitignore

Note

If your project does not use magic layout files, simply delete the mag/ folder and provide the GDS directly in gds/.

Dependency Management

Other IP blocks following this convention can be added as a git submodule in the ip/ folder.

This command expects the IP block to belong to the same user as the superproject:

git submodule add ../<ip_block>.git ip/<ip_block>

This command expects the IP block to be hosted on GitHub by a different user:

git submodule add ../../<user>/<ip_block>.git ip/<ip_block>

Using relative URLs will make sure the submodule is pulled using the correct method (HTTPS/SSH).

The xschemrc of this repository will automatically source the xschemrcs of the dependencies. This is repeated recursively.


Important

Please delete everything above and including this text when you create your own IP block using this template, and update the information below.

sky130_ef_ip__template

Short description about your IP block.

License and Information

The Apache License, version 2.0.