Merge branch 'dev' into char

This commit is contained in:
Bugra Onal 2023-01-19 12:18:38 -08:00
commit a7cbf254be
496 changed files with 4423 additions and 3779 deletions

27
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -0,0 +1,27 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**Version**
Which commit are you using?
**To Reproduce**
What did you do to demonstrate the bug?
Please include your configuration file used.
**Expected behavior**
A clear and concise description of what you expected to happen.
**Logs**
If applicable, add logs or output to help explain your problem.
**Additional context**
Add any other context about the problem here.

1
.gitignore vendored
View File

@ -21,3 +21,4 @@ sky130A/
sky130B/ sky130B/
skywater-pdk/ skywater-pdk/
sky130_fd_bd_sram/ sky130_fd_bd_sram/
docker/openram-ubuntu.log

View File

@ -58,16 +58,14 @@ $(SKY130_PDKS_DIR): check-pdk-root
@echo "Cloning skywater PDK..." @echo "Cloning skywater PDK..."
@[ -d $(PDK_ROOT)/skywater-pdk ] || \ @[ -d $(PDK_ROOT)/skywater-pdk ] || \
git clone https://github.com/google/skywater-pdk.git $(PDK_ROOT)/skywater-pdk git clone https://github.com/google/skywater-pdk.git $(PDK_ROOT)/skywater-pdk
@cd $(SKY130_PDKS_DIR) && \ @git -C $(SKY130_PDKS_DIR) checkout $(SKY130_PDKS_GIT_COMMIT) && \
git checkout main && git pull && \ git -C $(SKY130_PDKS_DIR) submodule update --init libraries/sky130_fd_pr/latest libraries/sky130_fd_sc_hd/latest
git checkout -qf $(SKY130_PDKS_GIT_COMMIT) && \
git submodule update --init libraries/sky130_fd_pr/latest libraries/sky130_fd_sc_hd/latest
$(OPEN_PDKS_DIR): $(SKY130_PDKS_DIR) $(OPEN_PDKS_DIR): $(SKY130_PDKS_DIR)
@echo "Cloning open_pdks..." @echo "Cloning open_pdks..."
@[ -d $(OPEN_PDKS_DIR) ] || \ @[ -d $(OPEN_PDKS_DIR) ] || \
git clone $(OPEN_PDKS_GIT_REPO) $(OPEN_PDKS_DIR) git clone $(OPEN_PDKS_GIT_REPO) $(OPEN_PDKS_DIR)
@cd $(OPEN_PDKS_DIR) && git pull && git checkout $(OPEN_PDKS_GIT_COMMIT) @git -C $(OPEN_PDKS_DIR) checkout $(OPEN_PDKS_GIT_COMMIT)
$(SKY130_PDK): $(OPEN_PDKS_DIR) $(SKY130_PDKS_DIR) $(SKY130_PDK): $(OPEN_PDKS_DIR) $(SKY130_PDKS_DIR)
@echo "Installing open_pdks..." @echo "Installing open_pdks..."
@ -80,9 +78,9 @@ $(SKY130_PDK): $(OPEN_PDKS_DIR) $(SKY130_PDKS_DIR)
$(SRAM_LIB_DIR): check-pdk-root $(SRAM_LIB_DIR): check-pdk-root
@echo "Cloning SRAM library..." @echo "Cloning SRAM library..."
@[ -d $(SRAM_LIB_DIR) ] || (\ @[ -d $(SRAM_LIB_DIR) ] || \
git clone $(SRAM_LIB_GIT_REPO) $(SRAM_LIB_DIR) && \ git clone $(SRAM_LIB_GIT_REPO) $(SRAM_LIB_DIR)
cd $(SRAM_LIB_DIR) && git pull && git checkout $(SRAM_LIB_GIT_COMMIT)) @git -C $(SRAM_LIB_DIR) checkout $(SRAM_LIB_GIT_COMMIT)
install: $(SRAM_LIB_DIR) install: $(SRAM_LIB_DIR)
@[ -d $(PDK_ROOT)/sky130A ] || \ @[ -d $(PDK_ROOT)/sky130A ] || \
@ -226,5 +224,5 @@ build-library:
# Build and install the openram library # Build and install the openram library
library: build-library library: build-library
@python3 -m pip install --find-links=dist openram --force @python3 -m pip install --force --find-links=dist openram
.PHONY: library .PHONY: library

View File

@ -44,12 +44,14 @@ OpenRAM is licensed under the [BSD 3-clause License](./LICENSE).
# Publications # Publications
+ M. R. Guthaus, J. E. Stine, S. Ataei, B. Chen, B. Wu, M. Sarwar, "OpenRAM: An Open-Source Memory Compiler," Proceedings of the 35th International Conference on Computer-Aided Design (ICCAD), 2016 + [M. R. Guthaus, J. E. Stine, S. Ataei, B. Chen, B. Wu, M. Sarwar, "OpenRAM: An Open-Source Memory Compiler," Proceedings of the 35th International Conference on Computer-Aided Design (ICCAD), 2016.](https://escholarship.org/content/qt8x19c778/qt8x19c778_noSplash_b2b3fbbb57f1269f86d0de77865b0691.pdf)
+ S. Ataei, J. Stine, M. Guthaus, “A 64 kb differential single-port 12T SRAM design with a bit-interleaving scheme for low-voltage operation in 32 nm SOI CMOS,” International Conference on Computer Design (ICCD), 2016, pp. 499-506. + [S. Ataei, J. Stine, M. Guthaus, “A 64 kb differential single-port 12T SRAM design with a bit-interleaving scheme for low-voltage operation in 32 nm SOI CMOS,” International Conference on Computer Design (ICCD), 2016, pp. 499-506.](https://escholarship.org/uc/item/99f6q9c9)
+ E. Ebrahimi, M. Guthaus, J. Renau, “Timing Speculative SRAM”, IEEE In- ternational Symposium on Circuits and Systems (ISCAS), 2017 + [E. Ebrahimi, M. Guthaus, J. Renau, “Timing Speculative SRAM”, IEEE In- ternational Symposium on Circuits and Systems (ISCAS), 2017.](https://escholarship.org/content/qt7nn0j5x3/qt7nn0j5x3_noSplash_172457455e1aceba20694c3d7aa489b4.pdf)
+ B. Wu, J.E. Stine, M.R. Guthaus, "Fast and Area-Efficient Word-Line Optimization", IEEE International Symposium on Circuits and Systems (ISCAS), 2019 + [B. Wu, J.E. Stine, M.R. Guthaus, "Fast and Area-Efficient Word-Line Optimization", IEEE International Symposium on Circuits and Systems (ISCAS), 2019.](https://escholarship.org/content/qt98s4c1hp/qt98s4c1hp_noSplash_753dcc3e218f60aafff98ef77fb56384.pdf)
+ B. Wu, M. Guthaus, "Bottom Up Approach for High Speed SRAM Word-line Buffer Insertion Optimization", IFIP/IEEE International Conference on Very Large Scale Integration (VLSI-SoC), 2019 + [B. Wu, M. Guthaus, "Bottom Up Approach for High Speed SRAM Word-line Buffer Insertion Optimization", IFIP/IEEE International Conference on Very Large Scale Integration (VLSI-SoC), 2019.](https://ieeexplore.ieee.org/document/8920325)
+ H. Nichols, M. Grimes, J. Sowash, J. Cirimelli-Low, M. Guthaus "Automated Synthesis of Multi-Port Memories and Control", IFIP/IEEE International Conference on Very Large Scale Integration (VLSI-SoC), 2019 + [H. Nichols, M. Grimes, J. Sowash, J. Cirimelli-Low, M. Guthaus "Automated Synthesis of Multi-Port Memories and Control", IFIP/IEEE International Conference on Very Large Scale Integration (VLSI-SoC), 2019.](https://escholarship.org/content/qt7047n3k0/qt7047n3k0.pdf?t=q4gcij)
+ [H. Nichols, "Statistical Modeling of SRAMs", M.S. Thesis, UCSC, 2022.](https://escholarship.org/content/qt7vx9n089/qt7vx9n089_noSplash_cfc4ba479d8eb1b6ec25d7c92357bc18.pdf?t=ra9wzr)
+ [M. Guthaus, H. Nichols, J. Cirimelli-Low, J. Kunzler, B. Wu, "Enabling Design Technology Co-Optimization of SRAMs though Open-Source Software", IEEE International Electron Devices Meeting (IEDM), 2020.](https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9372047)
# Contributors & Acknowledgment # Contributors & Acknowledgment

View File

@ -1,22 +1,31 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import os import os
import sys
# Attempt to add the source code to the PYTHONPATH here before running globals.init_openram(). # Attempt to add the source code to the PYTHONPATH here before running globals.init_openram().
try: try:
OPENRAM_HOME = os.path.abspath(os.environ.get("OPENRAM_HOME")) OPENRAM_HOME = os.path.abspath(os.environ.get("OPENRAM_HOME"))
except: except:
import openram OPENRAM_HOME = os.path.dirname(os.path.abspath(__file__)) + "/compiler"
OPENRAM_HOME = os.path.dirname(openram.__file__) + "/compiler"
if not os.path.isdir(OPENRAM_HOME): if not os.path.isdir(OPENRAM_HOME):
assert False assert False
if OPENRAM_HOME not in sys.path: # Make sure that OPENRAM_HOME is an environment variable just in case
sys.path.insert(0, OPENRAM_HOME) if "OPENRAM_HOME" not in os.environ.keys():
os.environ["OPENRAM_HOME"] = OPENRAM_HOME
# Prepend $OPENRAM_HOME to __path__ so that openram will use those modules
__path__.insert(0, OPENRAM_HOME)
# Import everything in globals.py
from .globals import *
# Import classes in the "openram" namespace
# sram_config should be imported before sram
from .sram_config import *
from .sram import *

View File

@ -1,3 +1,8 @@
# See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .channel_route import * from .channel_route import *
from .contact import * from .contact import *
from .delay_data import * from .delay_data import *

View File

@ -1,13 +1,13 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import collections import collections
import debug from openram import debug
from tech import drc from openram.tech import drc
from .vector import vector from .vector import vector
from .design import design from .design import design
@ -405,4 +405,3 @@ class channel_route(design):
to_layer=self.horizontal_layer, to_layer=self.horizontal_layer,
offset=pin_pos) offset=pin_pos)

View File

@ -1,15 +1,15 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import debug from openram import debug
from openram.tech import drc, layer, preferred_directions
from openram.tech import layer as tech_layers
from .hierarchy_design import hierarchy_design from .hierarchy_design import hierarchy_design
from .vector import vector from .vector import vector
from tech import drc, layer, preferred_directions
from tech import layer as tech_layers
class contact(hierarchy_design): class contact(hierarchy_design):

View File

@ -1,12 +1,11 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
class delay_data(): class delay_data():
""" """
This is the delay class to represent the delay information This is the delay class to represent the delay information
@ -38,7 +37,3 @@ class delay_data():
assert isinstance(other, delay_data) assert isinstance(other, delay_data)
return delay_data(other.delay + self.delay, return delay_data(other.delay + self.delay,
self.slew) self.slew)

View File

@ -1,15 +1,15 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import debug from openram import debug
from tech import GDS, layer from openram.tech import GDS, layer
from tech import preferred_directions from openram.tech import preferred_directions
from tech import cell_properties as props from openram.tech import cell_properties as props
from globals import OPTS from openram import OPTS
from . import utils from . import utils
from .hierarchy_design import hierarchy_design from .hierarchy_design import hierarchy_design
@ -67,7 +67,7 @@ class design(hierarchy_design):
self.setup_multiport_constants() self.setup_multiport_constants()
try: try:
from tech import power_grid from openram.tech import power_grid
self.supply_stack = power_grid self.supply_stack = power_grid
except ImportError: except ImportError:
# if no power_grid is specified by tech we use sensible defaults # if no power_grid is specified by tech we use sensible defaults

View File

@ -1,4 +1,8 @@
# See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
class drc_error(Exception): class drc_error(Exception):
"""Exception raised for DRC errors. """Exception raised for DRC errors.

View File

@ -1,6 +1,6 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
@ -8,14 +8,14 @@
""" """
This provides a set of useful generic types for the gdsMill interface. This provides a set of useful generic types for the gdsMill interface.
""" """
import debug
from .vector import vector
import tech
import math import math
import copy import copy
import numpy as np import numpy as np
from globals import OPTS from openram import debug
from openram import tech
from openram import OPTS
from .utils import round_to_grid from .utils import round_to_grid
from .vector import vector
class geometry: class geometry:
@ -249,7 +249,6 @@ class instance(geometry):
""" Return an absolute pin that is offset and transformed based on """ Return an absolute pin that is offset and transformed based on
this instance location. Index will return one of several pins.""" this instance location. Index will return one of several pins."""
import copy
if index == -1: if index == -1:
pin = copy.deepcopy(self.mod.get_pin(name)) pin = copy.deepcopy(self.mod.get_pin(name))
pin.transform(self.offset, self.mirror, self.rotate) pin.transform(self.offset, self.mirror, self.rotate)
@ -267,7 +266,6 @@ class instance(geometry):
""" Return an absolute pin that is offset and transformed based on """ Return an absolute pin that is offset and transformed based on
this instance location. """ this instance location. """
import copy
pin = copy.deepcopy(self.mod.get_pins(name)) pin = copy.deepcopy(self.mod.get_pins(name))
new_pins = [] new_pins = []

View File

@ -1,15 +1,15 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import os
from openram import debug
from openram import OPTS
from .hierarchy_layout import layout from .hierarchy_layout import layout
from .hierarchy_spice import spice from .hierarchy_spice import spice
import debug
import os
from globals import OPTS
class hierarchy_design(spice, layout): class hierarchy_design(spice, layout):
@ -49,7 +49,7 @@ class hierarchy_design(spice, layout):
def DRC_LVS(self, final_verification=False, force_check=False): def DRC_LVS(self, final_verification=False, force_check=False):
"""Checks both DRC and LVS for a module""" """Checks both DRC and LVS for a module"""
import verify from openram import verify
# No layout to check # No layout to check
if OPTS.netlist_only: if OPTS.netlist_only:
@ -82,7 +82,7 @@ class hierarchy_design(spice, layout):
def DRC(self, final_verification=False): def DRC(self, final_verification=False):
"""Checks DRC for a module""" """Checks DRC for a module"""
import verify from openram import verify
# Unit tests will check themselves. # Unit tests will check themselves.
# Do not run if disabled in options. # Do not run if disabled in options.
@ -102,7 +102,7 @@ class hierarchy_design(spice, layout):
def LVS(self, final_verification=False): def LVS(self, final_verification=False):
"""Checks LVS for a module""" """Checks LVS for a module"""
import verify from openram import verify
# Unit tests will check themselves. # Unit tests will check themselves.
# Do not run if disabled in options. # Do not run if disabled in options.

View File

@ -1,32 +1,32 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import os
import sys import sys
import os
import re import re
from math import sqrt from math import sqrt
import debug from openram import debug
from gdsMill import gdsMill from openram.gdsMill import gdsMill
import tech from openram import tech
from tech import drc, GDS from openram.tech import drc, GDS
from tech import layer as tech_layer from openram.tech import layer as tech_layer
from tech import layer_indices as tech_layer_indices from openram.tech import layer_indices as tech_layer_indices
from tech import preferred_directions from openram.tech import preferred_directions
from tech import layer_stacks as tech_layer_stacks from openram.tech import layer_stacks as tech_layer_stacks
from tech import active_stack as tech_active_stack from openram.tech import active_stack as tech_active_stack
from sram_factory import factory from openram.sram_factory import factory
from globals import OPTS from openram import OPTS
from .vector import vector from .vector import vector
from .pin_layout import pin_layout from .pin_layout import pin_layout
from .utils import round_to_grid from .utils import round_to_grid
from . import geometry from . import geometry
try: try:
from tech import special_purposes from openram.tech import special_purposes
except ImportError: except ImportError:
special_purposes = {} special_purposes = {}
@ -171,7 +171,7 @@ class layout():
in many places in the compiler. in many places in the compiler.
""" """
try: try:
from tech import power_grid from openram.tech import power_grid
layout.pwr_grid_layers = [power_grid[0], power_grid[2]] layout.pwr_grid_layers = [power_grid[0], power_grid[2]]
except ImportError: except ImportError:
layout.pwr_grid_layers = ["m3", "m4"] layout.pwr_grid_layers = ["m3", "m4"]
@ -1253,7 +1253,6 @@ class layout():
def add_via(self, layers, offset, size=[1, 1], directions=None, implant_type=None, well_type=None): def add_via(self, layers, offset, size=[1, 1], directions=None, implant_type=None, well_type=None):
""" Add a three layer via structure. """ """ Add a three layer via structure. """
from sram_factory import factory
via = factory.create(module_type="contact", via = factory.create(module_type="contact",
layer_stack=layers, layer_stack=layers,
dimensions=size, dimensions=size,
@ -1272,7 +1271,6 @@ class layout():
Add a three layer via structure by the center coordinate Add a three layer via structure by the center coordinate
accounting for mirroring and rotation. accounting for mirroring and rotation.
""" """
from sram_factory import factory
via = factory.create(module_type="contact", via = factory.create(module_type="contact",
layer_stack=layers, layer_stack=layers,
dimensions=size, dimensions=size,
@ -1379,8 +1377,8 @@ class layout():
def add_ptx(self, offset, mirror="R0", rotate=0, width=1, mults=1, tx_type="nmos"): def add_ptx(self, offset, mirror="R0", rotate=0, width=1, mults=1, tx_type="nmos"):
"""Adds a ptx module to the design.""" """Adds a ptx module to the design."""
import ptx from openram.modules import ptx
mos = ptx.ptx(width=width, mos = ptx(width=width,
mults=mults, mults=mults,
tx_type=tx_type) tx_type=tx_type)
inst = self.add_inst(name=mos.name, inst = self.add_inst(name=mos.name,
@ -2176,7 +2174,6 @@ class layout():
# Find the number of vias for this pitch # Find the number of vias for this pitch
supply_vias = 1 supply_vias = 1
from sram_factory import factory
while True: while True:
c = factory.create(module_type="contact", c = factory.create(module_type="contact",
layer_stack=self.m1_stack, layer_stack=self.m1_stack,
@ -2289,7 +2286,6 @@ class layout():
# Find the number of vias for this pitch # Find the number of vias for this pitch
self.supply_vias = 1 self.supply_vias = 1
from sram_factory import factory
while True: while True:
c = factory.create(module_type="contact", c = factory.create(module_type="contact",
layer_stack=self.m1_stack, layer_stack=self.m1_stack,

View File

@ -1,17 +1,18 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import debug
import re
import os import os
import re
import math import math
import tech import textwrap as tr
from globals import OPTS
from pprint import pformat from pprint import pformat
from openram import debug
from openram import tech
from openram import OPTS
from .delay_data import delay_data from .delay_data import delay_data
from .wire_spice_model import wire_spice_model from .wire_spice_model import wire_spice_model
from .power_data import power_data from .power_data import power_data
@ -37,7 +38,7 @@ class spice():
# If we have a separate lvs directory, then all the lvs files # If we have a separate lvs directory, then all the lvs files
# should be in there (all or nothing!) # should be in there (all or nothing!)
try: try:
from tech import lvs_name from openram.tech import lvs_name
lvs_dir = OPTS.openram_tech + lvs_name + "_lvs_lib/" lvs_dir = OPTS.openram_tech + lvs_name + "_lvs_lib/"
except ImportError: except ImportError:
lvs_dir = OPTS.openram_tech + "lvs_lib/" lvs_dir = OPTS.openram_tech + "lvs_lib/"
@ -338,10 +339,12 @@ class spice():
return return
# write out the first spice line (the subcircuit) # write out the first spice line (the subcircuit)
sp.write("\n.SUBCKT {0} {1}\n".format(self.cell_name, wrapped_pins = "\n+ ".join(tr.wrap(" ".join(self.pins)))
" ".join(self.pins))) sp.write("\n.SUBCKT {0}\n+ {1}\n".format(self.cell_name,
wrapped_pins))
# write a PININFO line # write a PININFO line
if False:
pin_info = "*.PININFO" pin_info = "*.PININFO"
for pin in self.pins: for pin in self.pins:
if self.pin_type[pin] == "INPUT": if self.pin_type[pin] == "INPUT":
@ -391,8 +394,10 @@ class spice():
" ".join(self.conns[i]))) " ".join(self.conns[i])))
sp.write("\n") sp.write("\n")
else: else:
sp.write("X{0} {1} {2}\n".format(self.insts[i].name, wrapped_connections = "\n+ ".join(tr.wrap(" ".join(self.conns[i])))
" ".join(self.conns[i]),
sp.write("X{0}\n+ {1}\n+ {2}\n".format(self.insts[i].name,
wrapped_connections,
self.insts[i].mod.cell_name)) self.insts[i].mod.cell_name))
sp.write(".ENDS {0}\n".format(self.cell_name)) sp.write(".ENDS {0}\n".format(self.cell_name))
@ -409,6 +414,7 @@ class spice():
sp.write("\n") sp.write("\n")
def sp_write(self, spname, lvs=False, trim=False): def sp_write(self, spname, lvs=False, trim=False):
"""Writes the spice to files""" """Writes the spice to files"""
debug.info(3, "Writing to {0}".format(spname)) debug.info(3, "Writing to {0}".format(spname))

View File

@ -1,17 +1,17 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import debug
from base import vector
from base import pin_layout
from tech import layer_names
import os import os
import shutil import shutil
from globals import OPTS from openram import debug
from openram.base import vector
from openram.base import pin_layout
from openram.tech import layer_names
from openram import OPTS
class lef: class lef:
@ -64,7 +64,7 @@ class lef:
f.write('puts "Finished writing LEF cell {}"\n'.format(self.name)) f.write('puts "Finished writing LEF cell {}"\n'.format(self.name))
f.close() f.close()
os.system("chmod u+x {}".format(run_file)) os.system("chmod u+x {}".format(run_file))
from run_script import run_script from openram.verify.run_script import run_script
(outfile, errfile, resultsfile) = run_script(self.name, "lef") (outfile, errfile, resultsfile) = run_script(self.name, "lef")
def lef_write(self, lef_name): def lef_write(self, lef_name):

View File

@ -1,12 +1,13 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import debug from openram import debug
from tech import parameter from openram.tech import parameter
class logical_effort(): class logical_effort():
""" """

View File

@ -1,15 +1,15 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import debug
from tech import GDS, drc
from .vector import vector
from tech import layer, layer_indices
import math import math
from openram import debug
from openram.tech import GDS, drc
from openram.tech import layer, layer_indices
from .vector import vector
class pin_layout: class pin_layout:
@ -48,8 +48,8 @@ class pin_layout:
else: else:
try: try:
from tech import layer_override from openram.tech import layer_override
from tech import layer_override_name from openram.tech import layer_override_name
if layer_override[name]: if layer_override[name]:
self.lpp = layer_override[name] self.lpp = layer_override[name]
self.layer = "pwellp" self.layer = "pwellp"
@ -406,15 +406,15 @@ class pin_layout:
# Try to use a global pin purpose if it exists, # Try to use a global pin purpose if it exists,
# otherwise, use the regular purpose # otherwise, use the regular purpose
try: try:
from tech import pin_purpose as global_pin_purpose from openram.tech import pin_purpose as global_pin_purpose
pin_purpose = global_pin_purpose pin_purpose = global_pin_purpose
except ImportError: except ImportError:
pass pass
try: try:
from tech import label_purpose from openram.tech import label_purpose
try: try:
from tech import layer_override_purpose from openram.tech import layer_override_purpose
if pin_layer_num in layer_override_purpose: if pin_layer_num in layer_override_purpose:
layer_num = layer_override_purpose[pin_layer_num][0] layer_num = layer_override_purpose[pin_layer_num][0]
label_purpose = layer_override_purpose[pin_layer_num][1] label_purpose = layer_override_purpose[pin_layer_num][1]

View File

@ -1,6 +1,6 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.

View File

@ -1,17 +1,18 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import debug from itertools import tee
from openram import debug
from openram.sram_factory import factory
from openram.tech import drc
from .design import design from .design import design
from .vector import vector from .vector import vector
from .vector3d import vector3d from .vector3d import vector3d
from tech import drc
from itertools import tee
from sram_factory import factory
class route(design): class route(design):
""" """

View File

@ -1,7 +1,11 @@
# See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
import copy import copy
from collections import defaultdict from collections import defaultdict
import debug from openram import debug
import json
class timing_graph(): class timing_graph():
@ -140,35 +144,6 @@ class timing_graph():
return [self.edge_mods[(path[i], path[i+1])] for i in range(len(path)-1)] return [self.edge_mods[(path[i], path[i+1])] for i in range(len(path)-1)]
def write(self, filename):
"""
Export graph to a JSON file
"""
# TODO: Find a proper way to store edge_mods values
with open(filename, 'w') as f:
f.write(
json.dumps(
{
'graph':
{key: list(val) for key, val in self.graph.items()},
'edge_mods':
{
', '.join(key): str(value)
for key, value in self.edge_mods.items()
}
}
)
)
def read(self, filename):
"""
Read graph from JSON file
"""
with open(filename, 'r') as f:
d = json.loads(f.read())
self.graph = {key: set(value) for key, value in d['graph'].items()}
self.edge_mods = {tuple(key.split(', ')): value for key, value in d['edge_mods'].items()}
def __str__(self): def __str__(self):
""" override print function output """ """ override print function output """

View File

@ -1,24 +1,22 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
#
import os import os
import math import math
from openram import debug
from gdsMill import gdsMill from openram import tech
import tech from openram.gdsMill import gdsMill
import globals from openram import OPTS
import debug
from .vector import vector from .vector import vector
from .pin_layout import pin_layout from .pin_layout import pin_layout
try: try:
from tech import special_purposes from openram.tech import special_purposes
except ImportError: except ImportError:
special_purposes = {} special_purposes = {}
OPTS = globals.OPTS
def ceil(decimal): def ceil(decimal):
@ -159,7 +157,7 @@ def get_gds_pins(pin_names, name, gds_filename, units):
# may have must-connect pins # may have must-connect pins
if isinstance(lpp[1], list): if isinstance(lpp[1], list):
try: try:
from tech import layer_override from openram.tech import layer_override
if layer_override[pin_name]: if layer_override[pin_name]:
lpp = layer_override[pin_name.textString] lpp = layer_override[pin_name.textString]
except: except:

View File

@ -1,13 +1,12 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import math import math
import tech from openram import tech
class vector(): class vector():

View File

@ -1,6 +1,6 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.

View File

@ -1,12 +1,12 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import math import math
from tech import spice from openram.tech import spice
class verilog: class verilog:

View File

@ -1,13 +1,13 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
from tech import drc from openram.tech import drc
from openram.sram_factory import factory
from .wire_path import wire_path from .wire_path import wire_path
from sram_factory import factory
class wire(wire_path): class wire(wire_path):
@ -71,7 +71,7 @@ class wire(wire_path):
# This is here for the unit tests which may not have # This is here for the unit tests which may not have
# initialized the static parts of the layout class yet. # initialized the static parts of the layout class yet.
from base import layout from openram.base import layout
layout("fake", "fake") layout("fake", "fake")
(layer1, via, layer2) = layer_stack (layer1, via, layer2) = layer_stack

View File

@ -1,15 +1,16 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
from .vector import vector from openram.tech import drc
from .utils import snap_to_grid from openram.tech import layer as techlayer
from .design import design from .design import design
from tech import drc from .utils import snap_to_grid
from tech import layer as techlayer from .vector import vector
def create_rectilinear_route(my_list): def create_rectilinear_route(my_list):
""" Add intermediate nodes if it isn't rectilinear. Also skip """ Add intermediate nodes if it isn't rectilinear. Also skip

View File

@ -1,6 +1,6 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
@ -16,14 +16,14 @@ class wire_spice_model():
self.wire_r = self.cal_wire_r(wire_length, wire_width) # r in each segment self.wire_r = self.cal_wire_r(wire_length, wire_width) # r in each segment
def cal_wire_c(self, wire_length, wire_width): def cal_wire_c(self, wire_length, wire_width):
from tech import spice from openram.tech import spice
# Convert the F/um^2 to fF/um^2 then multiple by width and length # Convert the F/um^2 to fF/um^2 then multiple by width and length
total_c = (spice["wire_unit_c"]*1e12) * wire_length * wire_width total_c = (spice["wire_unit_c"]*1e12) * wire_length * wire_width
wire_c = total_c / self.lump_num wire_c = total_c / self.lump_num
return wire_c return wire_c
def cal_wire_r(self, wire_length, wire_width): def cal_wire_r(self, wire_length, wire_width):
from tech import spice from openram.tech import spice
total_r = spice["wire_unit_r"] * wire_length / wire_width total_r = spice["wire_unit_r"] * wire_length / wire_width
wire_r = total_r / self.lump_num wire_r = total_r / self.lump_num
return wire_r return wire_r

View File

@ -1,13 +1,13 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import os import os
import debug from openram import debug
from globals import OPTS, find_exe, get_tool from openram import OPTS, find_exe, get_tool
from .lib import * from .lib import *
from .delay import * from .delay import *
from .elmore import * from .elmore import *
@ -56,4 +56,3 @@ if not OPTS.analytical_delay:
else: else:
debug.info(1, "Analytical model enabled.") debug.info(1, "Analytical model enabled.")

View File

@ -1,16 +1,16 @@
# See LICENSE for licensing information.
# #
# Copyright (c) 2016-2019 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import os
import debug
import csv import csv
import math import math
import numpy as np import numpy as np
import os from openram import debug
process_transform = {'SS':0.0, 'TT': 0.5, 'FF':1.0} process_transform = {'SS':0.0, 'TT': 0.5, 'FF':1.0}

View File

@ -1,6 +1,6 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.

View File

@ -1,17 +1,16 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2019 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
from .simulation import simulation
from globals import OPTS
import debug
import tech
import math import math
from openram import debug
from openram import tech
from openram import OPTS
from .simulation import simulation
class cacti(simulation): class cacti(simulation):
""" """

View File

@ -1,14 +1,14 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import os import os
import re import re
import debug from openram import debug
from globals import OPTS from openram import OPTS
def relative_compare(value1, value2, error_tolerance=0.001): def relative_compare(value1, value2, error_tolerance=0.001):

View File

@ -1,20 +1,20 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import shutil
import debug
import tech
import math import math
import shutil
from openram import debug
from openram import tech
from openram import OPTS
from .stimuli import * from .stimuli import *
from .trim_spice import * from .trim_spice import *
from .charutils import * from .charutils import *
from .sram_op import * from .sram_op import *
from .bit_polarity import * from .bit_polarity import *
from globals import OPTS
from .simulation import simulation from .simulation import simulation
from .measurements import * from .measurements import *
from os import path from os import path

View File

@ -1,14 +1,14 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2019 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
from openram import debug
from openram import OPTS
from .simulation import simulation from .simulation import simulation
from globals import OPTS
import debug
class elmore(simulation): class elmore(simulation):
""" """

View File

@ -1,4 +1,4 @@
from modules import sram_config from openram.modules import sram_config
from math import ceil from math import ceil
import re import re

View File

@ -1,51 +0,0 @@
# This is a temp file. Remove either this or the fake_sram.py
from modules import sram
import debug
from globals import OPTS
import os
class fake_sram_v2(sram):
def create_netlist(self):
# Make sure spice file is here
debug.check(os.path.exists(self.sp_name), "Spice netlist in {} not found".format(self.sp_name))
def generate_pins(self):
self.pins = ['vdd', 'gnd']
self.pins.extend(['clk{}'.format(port) for port in range(
OPTS.num_rw_ports + OPTS.num_r_ports + OPTS.num_w_ports)])
for port in range(OPTS.num_rw_ports):
self.pins.extend(['din{0}[{1}]'.format(port, bit)
for bit in range(self.num_cols)])
self.pins.extend(['dout{0}[{1}]'.format(port, bit)
for bit in range(self.num_cols)])
self.pins.extend(['addr{0}[{1}]'.format(port, bit)
for bit in range(self.addr_size)])
#if self.num_wmasks != 0:
# self.pins.extend(['wmask{0}[{1}]'.format(port, bit)
# for bit in range(self.num_wmasks)])
self.pins.extend(['csb{}'.format(port), 'web{}'.format(port)])
start_port = OPTS.num_rw_ports
for port in range(start_port, start_port + OPTS.num_r_ports):
self.pins.extend(['dout{0}[{1}]'.format(port, bit)
for bit in range(self.num_cols)])
self.pins.extend(['addr{0}[{1}]'.format(port, bit)
for bit in range(self.addr_size)])
self.pins.extend(['csb{}'.format(port)])
start_port += OPTS.num_r_ports
for port in range(start_port, start_port + OPTS.num_w_ports):
self.pins.extend(['din{0}[{1}]'.format(port, bit)
for bit in range(self.num_cols)])
self.pins.extend(['addr{0}[{1}]'.format(port, bit)
for bit in range(self.addr_size)])
if self.num_wmasks != 0:
self.pins.extend(['wmask{0}[{1}]'.format(port, bit)
for bit in range(self.num_wmasks)])
self.pins.extend(['csb{}'.format(port), 'web{}'.format(port)])

View File

@ -1,18 +1,18 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import collections
import debug
import random
import math import math
import random
import collections
from numpy import binary_repr from numpy import binary_repr
from openram import debug
from openram import OPTS
from .stimuli import * from .stimuli import *
from .charutils import * from .charutils import *
from globals import OPTS
from .simulation import simulation from .simulation import simulation
from .measurements import voltage_at_measure from .measurements import voltage_at_measure

View File

@ -1,21 +1,21 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import os,sys,re import os, sys, re
import time import time
import debug
import datetime import datetime
import numpy as np
from openram import debug
from openram import tech
from openram.tech import spice
from openram import OPTS
from .setup_hold import * from .setup_hold import *
from .delay import * from .delay import *
from .charutils import * from .charutils import *
import tech
import numpy as np
from globals import OPTS
from tech import spice
class lib: class lib:

View File

@ -1,17 +1,15 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2019 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
from .regression_model import regression_model
from sklearn.linear_model import Ridge from sklearn.linear_model import Ridge
from globals import OPTS
import debug
from sklearn.linear_model import LinearRegression from sklearn.linear_model import LinearRegression
from openram import debug
from openram import OPTS
from .regression_model import regression_model
class linear_regression(regression_model): class linear_regression(regression_model):

View File

@ -1,13 +1,13 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import debug
from tech import drc, parameter, spice
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from openram import debug
from openram.tech import drc, parameter, spice
from .stimuli import * from .stimuli import *
from .charutils import * from .charutils import *

View File

@ -1,16 +1,16 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import debug from openram import debug
import tech from openram import tech
from openram import OPTS
from .stimuli import * from .stimuli import *
from .trim_spice import * from .trim_spice import *
from .charutils import * from .charutils import *
from globals import OPTS
from .delay import delay from .delay import delay
from .measurements import * from .measurements import *

View File

@ -1,15 +1,14 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2019 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
from .regression_model import regression_model
from globals import OPTS
import debug
from sklearn.neural_network import MLPRegressor from sklearn.neural_network import MLPRegressor
from openram import debug
from openram import OPTS
from .regression_model import regression_model
class neural_network(regression_model): class neural_network(regression_model):

View File

@ -1,17 +1,16 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2019 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import math
from openram import debug
from openram import OPTS
from .analytical_util import * from .analytical_util import *
from .simulation import simulation from .simulation import simulation
from globals import OPTS
import debug
import math
relative_data_path = "sim_data" relative_data_path = "sim_data"
data_file = "sim_data.csv" data_file = "sim_data.csv"

View File

@ -1,16 +1,16 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import tech from openram import debug
from openram.sram_factory import factory
from openram import tech
from openram import OPTS
from .stimuli import * from .stimuli import *
import debug
from .charutils import * from .charutils import *
from globals import OPTS
from sram_factory import factory
class setup_hold(): class setup_hold():

View File

@ -1,16 +1,16 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import debug
import math import math
import tech from openram import debug
from globals import OPTS from openram.base import timing_graph
from sram_factory import factory from openram.sram_factory import factory
from base import timing_graph from openram import tech
from openram import OPTS
class simulation(): class simulation():

View File

@ -1,6 +1,6 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.

View File

@ -1,6 +1,6 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
@ -11,12 +11,12 @@ various functions that can be be used to generate stimulus for other
simulations as well. simulations as well.
""" """
import tech
import debug
import subprocess
import os import os
import subprocess
import numpy as np import numpy as np
from globals import OPTS from openram import debug
from openram import tech
from openram import OPTS
class stimuli(): class stimuli():

View File

@ -1,13 +1,13 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import debug
from math import log,ceil
import re import re
from math import log, ceil
from openram import debug
class trim_spice(): class trim_spice():

View File

@ -1 +1,6 @@
# See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .datasheet_gen import datasheet_gen from .datasheet_gen import datasheet_gen

View File

@ -1,14 +1,15 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
from pathlib import Path
import glob
import os
import sys import sys
import os
import glob
from pathlib import Path
# This is the path to the directory you would like to search # This is the path to the directory you would like to search
# This directory is searched recursively for .html files # This directory is searched recursively for .html files

View File

@ -1,14 +1,14 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
from .table_gen import *
import os import os
import base64 import base64
from globals import OPTS from openram import OPTS
from .table_gen import *
class datasheet(): class datasheet():

View File

@ -1,6 +1,6 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
@ -15,10 +15,10 @@ a web friendly html datasheet.
# Improve css # Improve css
from globals import OPTS
import os import os
import math import math
import csv import csv
from openram import OPTS
from .datasheet import datasheet from .datasheet import datasheet
from .table_gen import table_gen from .table_gen import table_gen

View File

@ -1,12 +1,11 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
class table_gen: class table_gen:
"""small library of functions to generate the html tables""" """small library of functions to generate the html tables"""

View File

@ -1,15 +1,15 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import os
import inspect
import globals
import sys import sys
import os
import pdb import pdb
import inspect
from openram import globals
# the debug levels: # the debug levels:
# 0 = minimum output (default) # 0 = minimum output (default)
@ -96,7 +96,7 @@ log.create_file = True
def info(lev, str): def info(lev, str):
from globals import OPTS from openram.globals import OPTS
# 99 is a special never print level # 99 is a special never print level
if lev == 99: if lev == 99:
return return
@ -114,7 +114,7 @@ def info(lev, str):
def archive(): def archive():
from globals import OPTS from openram.globals import OPTS
try: try:
OPENRAM_HOME = os.path.abspath(os.environ.get("OPENRAM_HOME")) OPENRAM_HOME = os.path.abspath(os.environ.get("OPENRAM_HOME"))
except: except:

View File

@ -1,3 +1,8 @@
# See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .custom_cell_properties import * from .custom_cell_properties import *
from .custom_layer_properties import * from .custom_layer_properties import *
from .design_rules import * from .design_rules import *

View File

@ -1,6 +1,6 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2020 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.

View File

@ -1,12 +1,11 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2020 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
class _bank: class _bank:
def __init__(self, stack, pitch): def __init__(self, stack, pitch):
# bank # bank

View File

@ -1,11 +1,11 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import debug from openram import debug
from .drc_value import * from .drc_value import *
from .drc_lut import * from .drc_lut import *

View File

@ -1,11 +1,11 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
import debug from openram import debug
class drc_lut(): class drc_lut():

View File

@ -1,12 +1,11 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
# #
class drc_value(): class drc_value():
""" """
A single DRC value. A single DRC value.

View File

@ -1,6 +1,6 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.

View File

@ -1,8 +1,8 @@
import pyx
import math import math
from numpy import matrix
from gdsPrimitives import *
import random import random
from numpy import matrix
from openram.gdsMill import pyx
from .gdsPrimitives import *
class pdfLayout: class pdfLayout:
"""Class representing a view for a layout as a PDF""" """Class representing a view for a layout as a PDF"""

View File

@ -1,8 +1,8 @@
from .gdsPrimitives import * import math
from datetime import * from datetime import *
import numpy as np import numpy as np
import math from openram import debug
import debug from .gdsPrimitives import *
class VlsiLayout: class VlsiLayout:
@ -774,7 +774,7 @@ class VlsiLayout:
else: else:
label_text = label.textString label_text = label.textString
try: try:
from tech import layer_override from openram.tech import layer_override
if layer_override[label_text]: if layer_override[label_text]:
shapes = self.getAllShapes((layer_override[label_text][0], None)) shapes = self.getAllShapes((layer_override[label_text][0], None))
if not shapes: if not shapes:

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.

View File

@ -1,6 +1,6 @@
# See LICENSE for licensing information. # See LICENSE for licensing information.
# #
# Copyright (c) 2016-2021 Regents of the University of California and The Board # Copyright (c) 2016-2022 Regents of the University of California and The Board
# of Regents for the Oklahoma Agricultural and Mechanical College # of Regents for the Oklahoma Agricultural and Mechanical College
# (acting for and on behalf of Oklahoma State University) # (acting for and on behalf of Oklahoma State University)
# All rights reserved. # All rights reserved.
@ -9,17 +9,17 @@
This is called globals.py, but it actually parses all the arguments This is called globals.py, but it actually parses all the arguments
and performs the global OpenRAM setup as well. and performs the global OpenRAM setup as well.
""" """
import sys
import os import os
import debug import re
import shutil import shutil
import optparse import optparse
import options
import sys
import re
import copy import copy
import importlib import importlib
import getpass import getpass
import subprocess import subprocess
from openram import debug
from openram import options
VERSION = "1.2.0" VERSION = "1.2.0"
@ -185,7 +185,7 @@ def check_versions():
OPTS.coverage = 0 OPTS.coverage = 0
def init_openram(config_file, is_unit_test=True): def init_openram(config_file, is_unit_test=False):
""" Initialize the technology, paths, simulators, etc. """ """ Initialize the technology, paths, simulators, etc. """
check_versions() check_versions()
@ -202,7 +202,7 @@ def init_openram(config_file, is_unit_test=True):
init_paths() init_paths()
from sram_factory import factory from openram.sram_factory import factory
factory.reset() factory.reset()
global OPTS global OPTS
@ -222,8 +222,8 @@ def init_openram(config_file, is_unit_test=True):
setup_bitcell() setup_bitcell()
# Import these to find the executables for checkpointing # Import these to find the executables for checkpointing
import characterizer from openram import characterizer
import verify from openram import verify
# Make a checkpoint of the options so we can restore # Make a checkpoint of the options so we can restore
# after each unit test # after each unit test
if not CHECKPOINT_OPTS: if not CHECKPOINT_OPTS:
@ -249,7 +249,7 @@ def setup_bitcell():
# See if bitcell exists # See if bitcell exists
try: try:
c = importlib.import_module("modules." + OPTS.bitcell) c = importlib.import_module("openram.modules." + OPTS.bitcell)
mod = getattr(c, OPTS.bitcell) mod = getattr(c, OPTS.bitcell)
except ImportError: except ImportError:
# Use the pbitcell if we couldn't find a custom bitcell # Use the pbitcell if we couldn't find a custom bitcell
@ -294,7 +294,7 @@ def get_tool(tool_type, preferences, default_name=None):
return(None, "") return(None, "")
def read_config(config_file, is_unit_test=True): def read_config(config_file, is_unit_test=False):
""" """
Read the configuration file that defines a few parameters. The Read the configuration file that defines a few parameters. The
config file is just a Python file that defines some config config file is just a Python file that defines some config
@ -385,7 +385,7 @@ def end_openram():
cleanup_paths() cleanup_paths()
if OPTS.check_lvsdrc: if OPTS.check_lvsdrc:
import verify from openram import verify
verify.print_drc_stats() verify.print_drc_stats()
verify.print_lvs_stats() verify.print_lvs_stats()
verify.print_pex_stats() verify.print_pex_stats()
@ -429,24 +429,9 @@ def setup_paths():
global OPTS global OPTS
# If $OPENRAM_HOME is defined, use that path for the source code. from openram import OPENRAM_HOME
# Otherwise, use the openram package.
try:
OPENRAM_HOME = os.path.abspath(os.environ.get("OPENRAM_HOME"))
except:
import openram
OPENRAM_HOME = os.path.dirname(openram.__file__) + "/compiler"
# Add this directory to os.environ here
os.environ["OPENRAM_HOME"] = OPENRAM_HOME
debug.check(os.path.isdir(OPENRAM_HOME),
"$OPENRAM_HOME does not exist: {0}".format(OPENRAM_HOME))
debug.info(1, "OpenRAM source code found in {}".format(OPENRAM_HOME)) debug.info(1, "OpenRAM source code found in {}".format(OPENRAM_HOME))
if OPENRAM_HOME not in sys.path:
sys.path.insert(0, OPENRAM_HOME)
debug.info(2, "Adding source code to PYTHONPATH.")
# Use a unique temp subdirectory if multithreaded # Use a unique temp subdirectory if multithreaded
if OPTS.num_threads > 1 or OPTS.openram_temp == "/tmp": if OPTS.num_threads > 1 or OPTS.openram_temp == "/tmp":
@ -515,7 +500,7 @@ def init_paths():
def set_default_corner(): def set_default_corner():
""" Set the default corner. """ """ Set the default corner. """
import tech from openram import tech
# Set some default options now based on the technology... # Set some default options now based on the technology...
if (OPTS.process_corners == ""): if (OPTS.process_corners == ""):
if OPTS.nominal_corner_only: if OPTS.nominal_corner_only:
@ -548,8 +533,7 @@ def import_tech():
""" Dynamically adds the tech directory to the path and imports it. """ """ Dynamically adds the tech directory to the path and imports it. """
global OPTS global OPTS
debug.info(2, debug.info(2, "Importing technology: " + OPTS.tech_name)
"Importing technology: " + OPTS.tech_name)
OPENRAM_TECH = "" OPENRAM_TECH = ""
@ -591,18 +575,23 @@ def import_tech():
OPTS.openram_tech = os.path.dirname(tech_mod.__file__) + "/" OPTS.openram_tech = os.path.dirname(tech_mod.__file__) + "/"
# Prepend the tech directory so it is sourced FIRST # Append tech_path to openram.__path__ to import it from openram
tech_path = OPTS.openram_tech tech_path = OPTS.openram_tech
sys.path.insert(0, tech_path) openram.__path__.append(tech_path)
try: try:
import tech from openram import tech
except ImportError: except ImportError:
debug.error("Could not load tech module.", -1) debug.error("Could not load tech module.", -1)
# Prepend custom modules of the technology to the path, if they exist # Remove OPENRAM_TECH from sys.path because we should be done with those
custom_mod_path = os.path.join(tech_path, "modules/") for tech_path in OPENRAM_TECH.split(":"):
sys.path.remove(tech_path)
# Add the custom modules to "tech"
custom_mod_path = os.path.join(tech_path, "custom/")
if os.path.exists(custom_mod_path): if os.path.exists(custom_mod_path):
sys.path.insert(0, custom_mod_path) from openram import tech
tech.__path__.append(custom_mod_path)
def print_time(name, now_time, last_time=None, indentation=2): def print_time(name, now_time, last_time=None, indentation=2):

View File

@ -1 +1,6 @@
# See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
model_name = "cacti" model_name = "cacti"

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 10 word_size = 10
num_words = 64 num_words = 64
words_per_row = 4 words_per_row = 4

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 128 word_size = 128
num_words = 1024 num_words = 1024

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 12 word_size = 12
num_words = 128 num_words = 128
words_per_row = 4 words_per_row = 4

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 12 word_size = 12
num_words = 16 num_words = 16
words_per_row = 1 words_per_row = 1

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 12 word_size = 12
num_words = 256 num_words = 256
words_per_row = 16 words_per_row = 16

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 12 word_size = 12
num_words = 256 num_words = 256
words_per_row = 8 words_per_row = 8

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 14 word_size = 14
num_words = 32 num_words = 32
words_per_row = 2 words_per_row = 2

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 15 word_size = 15
num_words = 512 num_words = 512
words_per_row = 8 words_per_row = 8

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 16 word_size = 16
num_words = 1024 num_words = 1024
words_per_row = 16 words_per_row = 16

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 17 word_size = 17
num_words = 1024 num_words = 1024
words_per_row = 16 words_per_row = 16

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 17 word_size = 17
num_words = 256 num_words = 256
words_per_row = 16 words_per_row = 16

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 18 word_size = 18
num_words = 128 num_words = 128
words_per_row = 2 words_per_row = 2

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 18 word_size = 18
num_words = 32 num_words = 32
words_per_row = 1 words_per_row = 1

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 21 word_size = 21
num_words = 1024 num_words = 1024
words_per_row = 4 words_per_row = 4

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 22 word_size = 22
num_words = 512 num_words = 512
words_per_row = 16 words_per_row = 16

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 23 word_size = 23
num_words = 1024 num_words = 1024
words_per_row = 16 words_per_row = 16

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 26 word_size = 26
num_words = 64 num_words = 64
words_per_row = 4 words_per_row = 4

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 27 word_size = 27
num_words = 1024 num_words = 1024
words_per_row = 4 words_per_row = 4

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 27 word_size = 27
num_words = 256 num_words = 256
words_per_row = 8 words_per_row = 8

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 27 word_size = 27
num_words = 512 num_words = 512
words_per_row = 4 words_per_row = 4

View File

@ -1,3 +1,8 @@
# See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from shared_config import * from shared_config import *
word_size = 32 word_size = 32
num_words = 1024 num_words = 1024

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 32 word_size = 32
num_words = 2048 num_words = 2048

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 32 word_size = 32
num_words = 256 num_words = 256

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 32 word_size = 32
num_words = 32 num_words = 32
words_per_row = 1 words_per_row = 1

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 32 word_size = 32
num_words = 512 num_words = 512

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 4 word_size = 4
num_words = 16 num_words = 16
words_per_row = 1 words_per_row = 1

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 4 word_size = 4
num_words = 32 num_words = 32
words_per_row = 2 words_per_row = 2

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 4 word_size = 4
num_words = 64 num_words = 64
words_per_row = 4 words_per_row = 4

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 5 word_size = 5
num_words = 256 num_words = 256
words_per_row = 16 words_per_row = 16

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 64 word_size = 64
num_words = 1024 num_words = 1024

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 64 word_size = 64
num_words = 512 num_words = 512

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 6 word_size = 6
num_words = 16 num_words = 16
words_per_row = 1 words_per_row = 1

View File

@ -1,4 +1,9 @@
from shared_config import * # See LICENSE for licensing information.
#
# Copyright (c) 2016-2022 Regents of the University of California, Santa Cruz
# All rights reserved.
#
from .shared_config import *
word_size = 7 word_size = 7
num_words = 256 num_words = 256
words_per_row = 4 words_per_row = 4

Some files were not shown because too many files have changed in this diff Show More