skywater-pdk Python Module
==========================

This Python module is a small library for working with the files found inside
the SkyWater PDK.

It includes tools for decoding things like file names into human readable
descriptions.

It also includes tools for combining files together.

License
=======

Like the SkyWater Open Source PDK, the SkyWater Python Module is released under
the
`Apache 2.0 license <https://github.com/google/skywater-pdk/blob/master/scripts/python-skywater-pdk/LICENSE>`_.

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

::

   Copyright 2020 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.


