blob: 688264842a639997966c5d5629c76e600d39ff21 [file] [log] [blame]
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright 2020 The SkyWater PDK Authors.
#
# Use of this source code is governed by the Apache 2.0
# license that can be found in the LICENSE file or at
# https://www.apache.org/licenses/LICENSE-2.0
#
# SPDX-License-Identifier: Apache-2.0
VERILOG_BASE = [
"full.v",
]
VERILOG_GENERATED = [
"blackbox.v",
"simple.v",
]
LIBERTY_BASE = [
"wrap.lib",
]
LIBERTY_GENERATED = [
"cell.lib",
]
def src_filename(filename):
"""Returns the source file for a generated file.
>>> src_filename("")
"""
if '.' in filename:
basename, extension = filename.split('.', 1)
else:
basename = filename
extension = ''
if extension.endswith(".v"):
if extension in VERILOG_BASE:
raise TypeError(
"File type {} (from file {}) is not generated!".format(
extension, filename))
elif extension not in VERILOG_GENERATED:
raise NameError(
"Unknown file type {} for file {}".format(
extension, filename))
return "{}.{}".format(basename, "full.v")
elif extension.endswith(".lib"):
if extension not in LIBERTY_BASE:
raise TypeError(
"File type {} (from file {}) is not generated!".format(
extension, filename))
elif extension not in LIBERTY_GENERATED:
raise NameError(
"Unknown file type {} for file {}".format(
extension, filename))
return "{}.{}".format(basename, ".json")
def is_generated(filename):
"""Determines if a file is generated from another source.
>>> is_generated("")
"""
if '.' in filename:
basename, extension = filename.split('.', 1)
else:
basename = filename
extension = ''
if extension.endswith(".v"):
if extension in VERILOG_BASE:
return False
elif extension in VERILOG_GENERATED:
return True
else:
raise NameError(
"Unknown file type {} for file {}".format(
extension, filename))
if extension.endswith(".lib"):
if extension in LIBERTY_BASE:
return False
elif extension in LIBERTY_GENERATED:
return True
if extension.endswith(".json"):
return True
if f.endswith(".png"):
return True
if f in ('README.rst',):
return True
return False
if __name__ == "__main__":
import doctest
doctest.testmod()