blob: 4d27d5f02ce39886d8ba4c6d033c76d988c4e8d5 [file] [log] [blame]
#!/usr/bin/env python3
import os
import subprocess
import sys
import time
libraries = {
"sky130_fd_pr": 'SKY130 Primitive Models and Cells',
"sky130_fd_io": 'IO and periphery cells provided by the SkyWater foundry.',
#
"sky130_fd_sc_hd": 'SKY130 High Density Digital Standard Cells (SkyWater Provided)',
"sky130_fd_sc_hdll": 'SKY130 High Density Low Leakage Digital Standard Cells (SkyWater Provided)',
#
"sky130_fd_sc_hs": 'SKY130 High Speed Digital Standard Cells (SkyWater Provided)',
"sky130_fd_sc_ms": 'SKY130 Medium Speed Digital Standard Cells (SkyWater Provided)',
"sky130_fd_sc_ls": 'SKY130 Low Speed Digital Standard Cells (SkyWater Provided)',
#
"sky130_fd_sc_hvl": 'SKY130 High Voltage Digital Standard Cells (SkyWater Provided)',
"sky130_fd_sc_lp": 'SKY130 Low Power Digital Standard Cells (SkyWater Provided)',
}
def run(cmd, **kw):
sys.stdout.flush()
sys.stderr.flush()
print(cmd, '-'*5, flush=True)
subprocess.check_call(cmd, shell=True, stderr=subprocess.STDOUT, **kw)
print('-'*5, flush=True)
sys.stdout.flush()
sys.stderr.flush()
DATE = None # 'Mon Oct 06 16:55:02 2020 -0700'
def git(cmd, gitdir, can_fail=False, **kw):
env = dict(os.environ)
if DATE:
env['GIT_AUTHOR_DATE'] = DATE
env['GIT_COMMITTER_DATE'] = DATE
env['GIT_COMMITTER_NAME'] = "Tim 'mithro' Ansell"
env['GIT_COMMITTER_EMAIL'] = 'tansell@google.com'
if 'push' in cmd:
cmd += ' --verbose --progress'
i = 0
while True:
try:
run('git '+cmd, cwd=gitdir, env=env, **kw)
break
except subprocess.CalledProcessError as e:
if can_fail:
return False
i += 1
if i < 5:
time.sleep(10)
continue
raise
def out_v(v, versions):
if (0,0,0) in versions:
return (v[0],v[1],v[2]+1)
return v
def previous_v(v, versions):
assert v in versions, (v, versions)
vers = [(0,0,0)]+[out_v(x, versions) for x in list(versions)]
ov = out_v(v, versions)
assert ov in vers, (ov, vers)
i = vers.index(ov)
assert i > 0, (i, ov, vers)
return vers[i-1]