Revision information on Open_PDKs 1.0
Open_PDKs revision history: Version 1.0
- posted: October 25, 2020 at 3:00am version: 1.0 revision: 52
Corrected outdated references to "s8" in the README.md file.
Updated README.md with more complete instructions that will show up on the github page.
- posted: October 23, 2020 at 3:00am version: 1.0 revision: 51
base commit for travisCI auto testing
Updated VERSION to go along with the travis-ci additions from the github pull request.
- posted: October 22, 2020 at 3:00am version: 1.0 revision: 50
fix the swapped lines in fix_missing_diodes_lef.py
Updated VERSION along with the two pull request merges.
Also: Fixed problem with regexp in the netgen setup not ignoring decap and fill cells for any library not having a 2-character designator after "sky130_fd_sc_", as pointed out by Mitch Bailey in issue 37.
Also: Provisional additions of under-bump material and redistribution layer vias (testing whether these layers can be derived or need to be explicitly drawn).
- posted: October 21, 2020 at 3:00am version: 1.0 revision: 49
sky130: add support for sky130_osu_sc_t18
Another few follow-up corrections.
Also: Updating VERSION to go along with the git merge of the most recent OSU stuff.
Also: openlane config updates (PR #30 and #31):
Also: add WIRE_RC_LAYER to the common config.tcl
Also: base commit for the lef modifying scripts
Also: a lame solution to make sure you don't invalidate the lef (do the same thing twice)
Also: cleanups and using hs/ms diodes in openlane
Also: cleanup according to the reviews
Also: Refer to the issue in a comment
Also: Modified a number of scripts using "/bin/env" to make it "/usr/bin/env", since the "/bin" location does not exist on some versions of Linux.
- posted: October 18, 2020 at 3:00am version: 1.0 revision: 48
Corrections in the magic techfile for the PPLUS and NPLUS auto-generated layers, especially to avoid bridging across butted taps.
Corrected and updated about half of the known missing/incorrect rules in the DRC ruleset.
Also: Finished pass through the DRC rule templates and fixed all of them that I could determine how to fix, leaving only a handful of errors not handled correctly.
- posted: October 15, 2020 at 3:00am version: 1.0 revision: 47
Corrected the tab error in cdl2spi.py, and modified foundry_install.py to make use of LEF and "readspice" annotation when creating layout database files from GDS sources.
Corrected the Magic device generator to paint nwell under pFETs when the guard ring is not selected (previously it was drawn with the guard ring so went missing when the guard ring was unselected). Corrected MiM cap DRC rules (to match the Calibre decks rather than the documentation, which has different layers for MiM cap). Note that Magic was modified to correct a wrong reported distance on CIF-DRC rules such as the one used for one of the MiM cap rules.
- posted: October 14, 2020 at 3:00am version: 1.0 revision: 46
Revised the install script for the released public repository for the I/O library sky130_fd_io. This mostly involved deleting files from the custom addition library, most of which need to be put back at some point with the new naming scheme.
Filled in additional files for the sky130_ef_io overlays and additional cells.
Also: Updated cdl2spi.py to handle resistors with models specified normally and not with $[...].
- posted: October 8, 2020 at 3:00am version: 1.0 revision: 45
Modified the cifinput section of the magic techfile to always draw pwell under p-tap (TAP AND-NOT NWELL). This serves to ensure that abstract views made with "lef write -toplayer" have the pwell masterslice layer to ensure the correct connectivity between the power and ground rails and the well and substrate, respectively.
- posted: October 3, 2020 at 3:00am version: 1.0 revision: 44
Corrected capacitor extraction (needed type "csubcircuit" and not "subcircuit" to get the correct L and W calculation).
Corrected some errors in the netgen setup, including incorrect references to circuit1 vs. circuit2, and specifically ignoring the monte carlo parameters "nf" for transistors and "mf" for MiM capacitors.
- posted: October 1, 2020 at 3:00am version: 1.0 revision: 43
Moved sort_pdkfiles.py to common/, and modified behavior to always use the default sort (which is a natural sort), given that doing "glob.glob" on a file directory results in a pretty arbitrary and meaningless ordering.
- posted: September 26, 2020 at 3:00am version: 1.0 revision: 42
Added additional option "sort" to supply a sorting script to specify the order of files when compiled into a library; this allows the Makefile to enforce natural sort order and/or put dependent entries at the top. Also added a custom script for sky130 to handle the assortment of "include" statements in the standard cell verilog before generating the library files.
openlane support for latch mapping in synthesis
- posted: September 25, 2020 at 3:00am version: 1.0 revision: 41
Various modifications to accommodate the somewhat complicated management of include statements in verilog files in order to build the compiled libraries.
- posted: September 23, 2020 at 3:00am version: 1.0 revision: 40
Modified the techfile to make use of a techfile extension added to magic that allows the paint/erase lines in "compose" to declare multiple types to be painted. This allows the "obslic" contact to be erased if painted over with obsm1 without erasing obsli underneath.
One more addition to the magic techfile, to make metal1 electrically connected across obslic, which is only supposed to represent an obstruction on the lower (locali) layer.
- posted: September 22, 2020 at 3:00am version: 1.0 revision: 39
Added resistor type short as a custom modification to the device models. Changed "obslic" (li-m1 contact as an obstruction layer) to be defined not between obsli and obsm1, but between obsli and metal1. This is consistent with the use of obsli in the standard cells with the LEF files generated using the "-toplayer" option, and allows metal1 to be placed across the power rails and obslic contacts without generating DRC errors.
Corrected the names of the mrdp_hv and mrdn_hv devices to match the sky130_fd_pr names, and made them resistor types rather than subcircuit types, to match the model definitions.
- posted: September 21, 2020 at 3:00am version: 1.0 revision: 38
First cut at properly incorporating the sky130_fd_pr primitive devices (much work do be done still).
Updated VERSION along with sky130_fd_pr library changes
Also: 2nd pass at updating the sky130 installer for sky130_fd_pr.
Also: There are continued problems with simulating various devices, but the installation is generally correct.
Also: Messed with the MiM cap definition before finally determining that the real problem is the same as the failure to compute W and L correctly for extended drain devices; i.e., the algorithm is wrong with the terminals are on a different plane.
- posted: September 18, 2020 at 3:00am version: 1.0 revision: 37
Corrected the DRC rule checking for metal1 hole area. It was not counting obstruction metal layers as part of the metal layers, and so was ending up flagging thousands of errors in the power rails of the standard cells, where the contacts (to li) were placed on obstruction layers as part of the "lef write -toplayer" option. This would only show up when using "drc(full)", which runs the minimum hole area check.
- posted: September 17, 2020 at 3:00am version: 1.0 revision: 36
Removed a lot of locks on layers, leaving mostly just obstruction and fill layers. Changed the names used for the DRC rules to match the names used in the Google/SkyWater online documentation.
Corrected one typo in the techfile.
Also: Corrected a typo in the magic techfile.
- posted: September 12, 2020 at 3:00am version: 1.0 revision: 35
Corrected the area parameter passed to the bipolar devices in the magic techfile, matching an update to magic to correct the area output for terminals other than the device identifier.
- posted: September 11, 2020 at 3:00am version: 1.0 revision: 34
Substantially revised the technology file for magic, the PDK device generator script for magic, the setup file for netgen, and the DRC torture test generator, to match the final naming conventions for the sky130_fd_pr library of primitive devices.
- posted: September 10, 2020 at 3:00am version: 1.0 revision: 33
Added support for the OSU standard cells for sky130 based on the existing repository.
Modified the spectre_to_spice.py script to remove a specific use of "m" in expressions, which might be incorrect to begin with.
Also: Added support for bipolar transistor types (using the pwell or nwell base layer as the transistor ID type) and bipolar transistor extraction.
Also: Added preliminary support for extended drain devices (reading and extraction).
Also: Finished implementing the three types of 20V extended drain devices (for reading and extracting; writing not yet supported).
- posted: August 31, 2020 at 3:00am version: 1.0 revision: 32
Split the cifinput section into two, because SkyWater sources have totally confused text and pin purposes in the GDS files, and need to have a style that maps both purposes onto "port".
openlane configs updates
Also: all common_pdn.tcl configs are now configurable
Also: renamed variables to follow the conventions
Also: Updated VERSION to go along with the last pull request.
- posted: August 29, 2020 at 3:00am version: 1.0 revision: 31
Additional changes/corrections to the spectre_to_spice script.
- posted: August 28, 2020 at 3:00am version: 1.0 revision: 30
More changes to the spectre_to_spice.py code.
Added find_all_devices.py from the Google/SkyWater work, as it is a useful script for determining information about where a subcircuit can be found in a model directory hierarchy, although it is somewhat tied to the Google/SkyWater specific file hierarchy.
- posted: August 26, 2020 at 3:00am version: 1.0 revision: 29
Corrections, mostly to spectre_to_spice to handle various issues, especially with the use of primitive device prefixes 'C' and 'R' to call subcircuits.
- posted: August 20, 2020 at 3:00am version: 1.0 revision: 28
Added a new script "fix_subckt_params.py" which works with the spectre_to_spice.py script, and moves parameters from a .param block in a subcircuit up to the .subckt line, so that the parameter can be passed to the subcircuit.
Added a script that parses a SPICE file and prints the parameters that are on the .subckt line, and the parameters that are internal to the subcircuit in a .param statement. Also, corrected spectre_to_spice.py to not add braces around an expression that is already encapsulated by single quotes, as that causes grief to ngspice.
Also: Forced spectre_to_spice.py to translate spectre model types "resistor" and "r2" to SPICE semicondutor resistor model type "r". The former is almost certainly correct; the latter, I'm unsure of.
- posted: August 18, 2020 at 3:00am version: 1.0 revision: 27
Added "split_one_spice.py", a companion script to "spectre_to_spice.py" that splits up a SPICE file (output from "spectre_to_spice.py") that has multiple subcircuits in it into multiple files, one file per subcircuit. This is much like "split_spice.py" except that is does not try to break models out of subcircuits, and it is much more careful about placing global parameters with the subcircuits that use them, and finding global parameters and other parts of the file that are common to more than one of the subcircuits, and retaining them in the original file.
- posted: August 15, 2020 at 3:00am version: 1.0 revision: 26
Started the conversion of device model names to the new naming convention on the Google/SkyWater repository.
- posted: August 13, 2020 at 3:00am version: 1.0 revision: 25
Updated the magic techfile with the first draft of the completed automated waffle fill cif output style.
- posted: August 10, 2020 at 3:00am version: 1.0 revision: 24
Modified the magic device generator to properly handle the "nf" parameter on MOSFET devices when converting from a netlist to layout. Corrected the netgen setup to ignore both "nf" and "mult" as netlist parameters, as well as other non-critical parameters that may or may not appear in both the schematic and layout- extracted netlists.
Corrections to the device generation script and magic techfile to support the specific-width xhrpoly and uhrpoly devices.
Also: More corrections to spectre_to_spice.py and split_spice.py.
Also: Made small whitespace fixes per contents of pull request #23 by Tim Ansell.
- posted: August 9, 2020 at 3:02am version: 1.0 revision: 23
Continuation operator needed in sky130/Makefile.in
Seems that some changes (SRAM devices added to netgen setup)? were not committed previously?
Also: Updated revision to trigger tarball and github mirror on new commits.
- posted: August 6, 2020 at 3:00am version: 1.0 revision: 22
Modified the configuration file to better handle the installation options. In particular, removed the "install-local" and "install-dist" targets in favor of just using "make install", with the install type dependent on the choices made by "configure". Made the local and distributed install paths specific to the PDK. Added the link type and efabless-style to the configuration options. Added a list of generic standard cell gates to be used by (not yet posted) software to automatically generate digital symbol libraries.
Updated revision to force a new tarball and the github mirror.
Also: Corrected the handling of parameters inside and outside a subcircuit call.
- posted: August 3, 2020 at 3:00am version: 1.0 revision: 21
OpenLane support for other sky130 variants
Renamed some variables to more meaningful names
Also: Minimal set up for autotools
Also: Updated the README files to reflect the new use of the autoconf "configure" script, and updated the VERSION revision number.
- posted: August 2, 2020 at 3:00am version: 1.0 revision: 20
Changed "convert_spectre.py" to "spectre_to_spice.py". Corrected the script to properly identify weird "spectreisms" in which resistors or capacitors are prefixed as subcircuits with "x" but use a model which is a resistor or capacitor. Also: Added more handling of SRAM (coreid) layers in the magic techfile for support of OpenRAM, and added a first pass at fill pattern generation in magic.
Additional fix to spectre_to_spice.py to handle spectreisms.
Also: Updated revision to trigger new tarball and github mirror.
- posted: August 1, 2020 at 3:00am version: 1.0 revision: 19
Updated the magic techfile to correct a few errors and extend the support for SRAM cells (to read and extract; no attempt to try to write an SRAM cell correctly).
- posted: July 29, 2020 at 3:00am version: 1.0 revision: 18
Updated the convert_spectre.py script to correct a number of errors, especially related to CDL formats which may appear in spectre files. Added a "split_spice.py" script to take the output of "convert_spectre.py" and pull the subcircuit definitions out of it and put them in separate files.
More fixes on the two spectre-to-SPICE conversion scripts.
Also: Enabled the REDISTRIBUTION option in the Makefile for sky130A. Corrected the convert_spectre.py to ignore .scs files, which have no SPICE equivalent.
- posted: July 28, 2020 at 3:00am version: 1.0 revision: 17
Corrected the Makefile to correct the string used for excluding files from the LEF compile.
Setting the default LINK_TARGETS to none
Also: Minor typos fixed in the Makefile
Also: Minor fixes to the magicrc and netgen setup files
Also: Removing the :: from ::env because I normally don't like to force the scope of commands in Tcl, which causes problems if you try to rename the command. Although its use here is probably harmless, I find the notation cumbersome.
Also: Removed ; after END LIBRARY
Also: Added a comment about EF_STYLE in sky130/README
Also: Commented out missing IO and OSU libraries
Also: Using TECHNAME in klayout .lyt file
- posted: July 27, 2020 at 3:00am version: 1.0 revision: 16
Removed all of the routines that generate compiled libraries from individual files for various file formats (GDS, LEF, SPICE/CDL, and verilog (liberty is unfinished and probably never will be), and put the in individual files that can be either run separately from the command line or included into the foundry_install.py script and run internally.
Additional corrections to the standalone library compile scripts.
Also: Added the "END LIBRARY" line back to the end of the LEF library after removing all of the individual ones.
- posted: July 26, 2020 at 3:00am version: 1.0 revision: 15
Fix for naming conventions (only comments changed).
- posted: July 24, 2020 at 3:00am version: 1.0 revision: 14
Finished the first working draft of the spectre-to-SPICE conversion script.
- posted: July 23, 2020 at 3:00am version: 1.0 revision: 13
Added a convert_spectre.py script which makes a basic first-pass attempt to convert spectre files into valid SPICE files. Note that this does not attempt to guarantee ngspice compatibility, as that is handled by other scripts.
- posted: July 21, 2020 at 3:00am version: 1.0 revision: 12
Per the bug report by Ronan Barzic, corrected the staging_install.py script to correctly support LINK_TARGETS=none.
- posted: July 18, 2020 at 3:00am version: 1.0 revision: 11
Corrected the last commit where I accidentally inserted a tab, discovered by Sylvain Munaut (whose pull request I am improperly bypassing, sorry).
- posted: July 17, 2020 at 3:00am version: 1.0 revision: 10
Changed the "create_gds_library" command to use the new command option "gds library" in magic, so that the top level with the example cells is not saved into the GDS output (which can cause problems with some tools).
- posted: July 16, 2020 at 3:00am version: 1.0 revision: 9
Modified sky130.tech magic techfile to add nwell and pwell as masterslice layers to the LEF input setup; this should resolve issues with the VNB and VPB pins in standard cells. Along with that, committed a script to correct the layers assigned to VNB and VPB in the original sources.
- posted: July 15, 2020 at 3:00am version: 1.0 revision: 8
Corrected the Makefile, which was using the "exclude" option on the standard cell verilog that was supposed to be used on the standard cell LEF. Mostly all this does is to change the nature of the error that occurs. Ultimately the source of the LEF files needs to be fixed, which will happen eventually. Also corrected the generate() routine in soc_floorplanner. This fixes the behavior in which clicking on the "Generate" button in the floorplanner app causes an error.
- posted: July 14, 2020 at 3:00am version: 1.0 revision: 7
Corrected the surround rule for metal4 around via3 in the DRC and wiring sections. It had been implemented as 0.060 / 0.065 (directional) instead of 0.065 (regardless of direction).
Removed the diode cell CDL files for sky130_fd_sc_hd, which are currently in the Google/SkyWater repository.
- posted: July 12, 2020 at 3:00am version: 1.0 revision: 6
Corrected sidewall values for poly through metal2, which had been missing from the original simulation.
Updated README to correct the instructions for the Google/SkyWater repository install (had the wrong names for the library subdirectories).
- posted: July 11, 2020 at 3:00am version: 1.0 revision: 5
Corrected all of the parasitic capacitance values in the tables based on the values and equations in the SkyWater Calibre PEX decks, and verified by extracting an example with exhaustive combinations of overlapping poly, local interconnect, and metal layers.
- posted: July 9, 2020 at 3:00am version: 1.0 revision: 4
Minor corrections in the openlane configs
Corrected the names of the various digital standard cell libraries in the README file (which had become scrambled).
Also: Added Apache 2.0 license file.
Also: Added additional license information to the README files.
Also: Removed the custom technology LEF files, as these have been added to the Google/SkyWater git repository. Added more complete instructions for cloning and installing the Google/SkyWater repository. Modified the Makefile and qflow setup file for use with the technology LEF files from the repo.
- posted: July 8, 2020 at 3:00am version: 1.0 revision: 3
Reorganized the top level so that most working files for EDA tool setup are in directories with the EDA tool name. Updated the openlane setup files.
Updated version to update website and the github mirror repository.
Also: Added support for the OSU standard cell set for sky130, based on the existing repository.
Also: Added back the qflow support for the OSU standard cell libraries.
- posted: July 7, 2020 at 3:00am version: 1.0 revision: 2
Added "distclean" target to the Makefile, which is expected by the scripts handling automatic updates to the tarball and website.
Corrected variable reference in the README install instructions.
- posted: July 6, 2020 at 3:00am version: 1.0 revision: 1
Updated version to force an update on the system, and to force a mirror copy to github overnight.
- posted: July 5, 2020 version: 1.0 revision: 0
First public release.
Last updated: October 25, 2020 at 3:00am