custom junk and site verif from mpw7
parent
d5fc9bcd00
commit
685d4a98c4
@ -0,0 +1,125 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
from optparse import OptionParser
|
||||||
|
import gdspy
|
||||||
|
|
||||||
|
|
||||||
|
usage = '%prog [options] inFile'
|
||||||
|
parser = OptionParser(usage=usage)
|
||||||
|
(options, args) = parser.parse_args()
|
||||||
|
|
||||||
|
if len(args) != 1:
|
||||||
|
parser.error('Input .gds required.')
|
||||||
|
|
||||||
|
inFile = args[0]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
gdsii = gdspy.GdsLibrary()
|
||||||
|
gdsii.read_gds(inFile)
|
||||||
|
|
||||||
|
# list of unreferenced cells
|
||||||
|
c = gdsii.top_level()
|
||||||
|
print(c)
|
||||||
|
|
||||||
|
LayerNames = {
|
||||||
|
'64:5' : 'nwell, label',
|
||||||
|
'64:59' : 'pwell, label',
|
||||||
|
'67:5' : 'li1, label',
|
||||||
|
'68:5' : 'met1, label',
|
||||||
|
'83:44' : 'text, label'
|
||||||
|
}
|
||||||
|
|
||||||
|
class Polygon:
|
||||||
|
def __init__(self, polygon, layer, datatype, properties=None):
|
||||||
|
self.polygon = polygon
|
||||||
|
self.layer = layer
|
||||||
|
self.datatype = datatype
|
||||||
|
self.properties = properties
|
||||||
|
|
||||||
|
class PolygonSets:
|
||||||
|
def __init__(self, properties):
|
||||||
|
self.polygons = []
|
||||||
|
self.properties = properties
|
||||||
|
|
||||||
|
maxLayers = 300
|
||||||
|
maxTypes = 300
|
||||||
|
|
||||||
|
numLabels = 0
|
||||||
|
numPolygons = 0
|
||||||
|
numPolygonSets = 0
|
||||||
|
|
||||||
|
# layer/type
|
||||||
|
labels = []
|
||||||
|
for i in range(maxLayers):
|
||||||
|
labels.append([])
|
||||||
|
for j in range(maxTypes):
|
||||||
|
labels[i].append([])
|
||||||
|
|
||||||
|
polygons = []
|
||||||
|
for i in range(maxLayers):
|
||||||
|
polygons.append([])
|
||||||
|
for j in range(maxTypes):
|
||||||
|
polygons[i].append([])
|
||||||
|
|
||||||
|
for i in range(len(c)):
|
||||||
|
|
||||||
|
b = c[i].get_bounding_box()
|
||||||
|
print(f'Cell {i} {b}')
|
||||||
|
|
||||||
|
p = c[i].get_dependencies()
|
||||||
|
print(f'Dependencies ({len(p)})')
|
||||||
|
for pp in p:
|
||||||
|
print(p)
|
||||||
|
|
||||||
|
p = c[i].get_paths()
|
||||||
|
print(f'Paths ({len(p)})')
|
||||||
|
for pp in p:
|
||||||
|
print(pp)
|
||||||
|
|
||||||
|
p = c[i].get_labels()
|
||||||
|
#print(f'Labels ({len(p)})')
|
||||||
|
for pp in p:
|
||||||
|
labels[pp.layer][pp.texttype].append(pp)
|
||||||
|
numLabels += 1
|
||||||
|
|
||||||
|
#p = c[i].get_datatypes()
|
||||||
|
#print(f'Data Types ({len(p)})')
|
||||||
|
#for pp in p:
|
||||||
|
# print(pp)
|
||||||
|
|
||||||
|
# print(f'Text Types')
|
||||||
|
# bug in source
|
||||||
|
# texttypes.update(reference.ref_cell.get_textypes())
|
||||||
|
# for l in c[i].get_texttypes():
|
||||||
|
# print(l)
|
||||||
|
|
||||||
|
#p = c[i].get_layers()
|
||||||
|
#print(f'Layers ({len(p)})')
|
||||||
|
#p = c[i].get_polygons()
|
||||||
|
#print(f'Polygons ({len(p)})')
|
||||||
|
|
||||||
|
# keep these as polygonsets? pp.properties belongs to the set only
|
||||||
|
p = c[i].get_polygonsets()
|
||||||
|
print(f'Polygon Sets ({len(p)})')
|
||||||
|
for pp in p:
|
||||||
|
for i in range(len(pp.polygons)):
|
||||||
|
numPolygons += 1
|
||||||
|
polygons[pp.layers[i]][pp.datatypes[i]].append(
|
||||||
|
Polygon(pp.polygons[i], pp.layers[i], pp.datatypes[i])
|
||||||
|
)
|
||||||
|
numPolygonSets += 1
|
||||||
|
|
||||||
|
|
||||||
|
print(f' Labels: {numLabels}')
|
||||||
|
print(f' Polygons: {numPolygons}')
|
||||||
|
print(f'PolygonSets: {numPolygonSets}')
|
||||||
|
|
||||||
|
for i in range(maxLayers):
|
||||||
|
for j in range(maxTypes):
|
||||||
|
if (len(labels[i][j]) > 0):
|
||||||
|
name = LayerNames[f'{i}:{j}']
|
||||||
|
print(f'{i:3d}:{j:3d} {name}')
|
||||||
|
for k in range(len(labels[i][j])):
|
||||||
|
label = labels[i][j][k]
|
||||||
|
print(f' {label.text} {label.position}')
|
Binary file not shown.
Binary file not shown.
@ -0,0 +1,6 @@
|
|||||||
|
toysram_local_eval.lef: NOWIREEXTENSIONATPIN ON ;
|
||||||
|
toysram_local_eval.lef: PIN RBL_O
|
||||||
|
toysram_local_eval.lef: PIN PRE_R_b
|
||||||
|
toysram_local_eval.lef: PIN VPB
|
||||||
|
toysram_local_eval.lef: PIN VNB
|
||||||
|
toysram_local_eval.lef: PIN VPWR
|
Binary file not shown.
Binary file not shown.
@ -0,0 +1,11 @@
|
|||||||
|
# magic -rcfile magic.tcl
|
||||||
|
|
||||||
|
source ../magic/.magic_tech/.magicrc
|
||||||
|
|
||||||
|
gds read local_eval.gds
|
||||||
|
load toysram_local_eval
|
||||||
|
|
||||||
|
# for some reason these don't return values; just puts
|
||||||
|
drc catchup
|
||||||
|
drc statistics
|
||||||
|
drc count total
|
@ -0,0 +1,11 @@
|
|||||||
|
# magic -rcfile magic.tcl
|
||||||
|
|
||||||
|
source ../magic/.magic_tech/.magicrc
|
||||||
|
|
||||||
|
gds read toysram_local_pullup.gds
|
||||||
|
load toysram_local_pullup
|
||||||
|
|
||||||
|
# for some reason these don't return values; just puts
|
||||||
|
drc catchup
|
||||||
|
drc statistics
|
||||||
|
drc count total
|
@ -0,0 +1,20 @@
|
|||||||
|
# magic -dnull -noconsole -rcfile magicdrc.tcl local_eval.gds
|
||||||
|
|
||||||
|
source ../magic/.magic_tech/.magicrc
|
||||||
|
#sleep 10
|
||||||
|
|
||||||
|
gds read local_eval.gds
|
||||||
|
load toysram_local_eval
|
||||||
|
|
||||||
|
# for some reason these don't return values; just puts
|
||||||
|
drc catchup
|
||||||
|
drc statistics
|
||||||
|
drc count total
|
||||||
|
|
||||||
|
drc find 1
|
||||||
|
drc find 2
|
||||||
|
drc find 3
|
||||||
|
drc find 4
|
||||||
|
drc find 5
|
||||||
|
|
||||||
|
exit
|
@ -0,0 +1,20 @@
|
|||||||
|
# magic -dnull -noconsole -rcfile magicdrc_pullup.tcl toysram_local_pullup.gds
|
||||||
|
|
||||||
|
source ../magic/.magic_tech/.magicrc
|
||||||
|
#sleep 10
|
||||||
|
|
||||||
|
gds read toysram_local_pullup.gds
|
||||||
|
load toysram_local_pullup
|
||||||
|
|
||||||
|
# for some reason these don't return values; just puts
|
||||||
|
drc catchup
|
||||||
|
drc statistics
|
||||||
|
drc count total
|
||||||
|
|
||||||
|
drc find 1
|
||||||
|
drc find 2
|
||||||
|
drc find 3
|
||||||
|
drc find 4
|
||||||
|
drc find 5
|
||||||
|
|
||||||
|
exit
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,93 @@
|
|||||||
|
VERSION 5.7 ;
|
||||||
|
NOWIREEXTENSIONATPIN ON ;
|
||||||
|
DIVIDERCHAR "/" ;
|
||||||
|
BUSBITCHARS "[]" ;
|
||||||
|
MACRO sky130_fd_sc_hd__nand2_1
|
||||||
|
CLASS CORE ;
|
||||||
|
FOREIGN sky130_fd_sc_hd__nand2_1 ;
|
||||||
|
ORIGIN 0.000 0.000 ;
|
||||||
|
SIZE 1.380 BY 2.720 ;
|
||||||
|
SYMMETRY X Y R90 ;
|
||||||
|
SITE unithd ;
|
||||||
|
PIN A
|
||||||
|
DIRECTION INPUT ;
|
||||||
|
USE SIGNAL ;
|
||||||
|
ANTENNAGATEAREA 0.247500 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.940 1.075 1.275 1.325 ;
|
||||||
|
END
|
||||||
|
END A
|
||||||
|
PIN B
|
||||||
|
DIRECTION INPUT ;
|
||||||
|
USE SIGNAL ;
|
||||||
|
ANTENNAGATEAREA 0.247500 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.095 1.055 0.430 1.325 ;
|
||||||
|
END
|
||||||
|
END B
|
||||||
|
PIN VGND
|
||||||
|
DIRECTION INOUT ;
|
||||||
|
USE GROUND ;
|
||||||
|
SHAPE ABUTMENT ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.085 0.085 0.395 0.885 ;
|
||||||
|
RECT 0.000 -0.085 1.380 0.085 ;
|
||||||
|
LAYER mcon ;
|
||||||
|
RECT 0.145 -0.085 0.315 0.085 ;
|
||||||
|
RECT 0.605 -0.085 0.775 0.085 ;
|
||||||
|
RECT 1.065 -0.085 1.235 0.085 ;
|
||||||
|
LAYER met1 ;
|
||||||
|
RECT 0.000 -0.240 1.380 0.240 ;
|
||||||
|
END
|
||||||
|
END VGND
|
||||||
|
PIN VNB
|
||||||
|
DIRECTION INOUT ;
|
||||||
|
USE GROUND ;
|
||||||
|
PORT
|
||||||
|
LAYER pwell ;
|
||||||
|
RECT 0.025 0.105 1.375 1.015 ;
|
||||||
|
RECT 0.140 -0.085 0.310 0.105 ;
|
||||||
|
END
|
||||||
|
END VNB
|
||||||
|
PIN VPB
|
||||||
|
DIRECTION INOUT ;
|
||||||
|
USE POWER ;
|
||||||
|
PORT
|
||||||
|
LAYER nwell ;
|
||||||
|
RECT -0.190 1.305 1.570 2.910 ;
|
||||||
|
END
|
||||||
|
END VPB
|
||||||
|
PIN VPWR
|
||||||
|
DIRECTION INOUT ;
|
||||||
|
USE POWER ;
|
||||||
|
SHAPE ABUTMENT ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.000 2.635 1.380 2.805 ;
|
||||||
|
RECT 0.085 1.495 0.365 2.635 ;
|
||||||
|
RECT 1.035 1.495 1.295 2.635 ;
|
||||||
|
LAYER mcon ;
|
||||||
|
RECT 0.145 2.635 0.315 2.805 ;
|
||||||
|
RECT 0.605 2.635 0.775 2.805 ;
|
||||||
|
RECT 1.065 2.635 1.235 2.805 ;
|
||||||
|
LAYER met1 ;
|
||||||
|
RECT 0.000 2.480 1.380 2.960 ;
|
||||||
|
END
|
||||||
|
END VPWR
|
||||||
|
PIN Y
|
||||||
|
DIRECTION OUTPUT ;
|
||||||
|
USE SIGNAL ;
|
||||||
|
ANTENNADIFFAREA 0.439000 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.535 1.485 0.865 2.465 ;
|
||||||
|
RECT 0.600 0.885 0.770 1.485 ;
|
||||||
|
RECT 0.600 0.255 1.295 0.885 ;
|
||||||
|
END
|
||||||
|
END Y
|
||||||
|
END sky130_fd_sc_hd__nand2_1
|
||||||
|
END LIBRARY
|
||||||
|
|
@ -0,0 +1,73 @@
|
|||||||
|
VERSION 5.7 ;
|
||||||
|
NOWIREEXTENSIONATPIN ON ;
|
||||||
|
DIVIDERCHAR "/" ;
|
||||||
|
BUSBITCHARS "[]" ;
|
||||||
|
MACRO toysram_local_eval
|
||||||
|
CLASS BLOCK ;
|
||||||
|
FOREIGN toysram_local_eval ;
|
||||||
|
ORIGIN 0.270 0.150 ;
|
||||||
|
SIZE 2.440 BY 3.200 ;
|
||||||
|
PIN RBL_O
|
||||||
|
ANTENNAGATEAREA 0.555000 ;
|
||||||
|
ANTENNADIFFAREA 0.898275 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.455 1.575 0.835 2.555 ;
|
||||||
|
RECT 0.015 1.190 0.350 1.415 ;
|
||||||
|
RECT 0.570 1.190 0.740 1.575 ;
|
||||||
|
RECT 1.580 1.415 1.825 2.525 ;
|
||||||
|
RECT 0.910 1.190 1.825 1.415 ;
|
||||||
|
RECT 0.015 1.165 1.825 1.190 ;
|
||||||
|
RECT 0.015 1.145 1.245 1.165 ;
|
||||||
|
RECT 0.170 0.975 1.245 1.145 ;
|
||||||
|
RECT 0.005 0.345 1.315 0.975 ;
|
||||||
|
RECT 0.005 0.175 1.245 0.345 ;
|
||||||
|
RECT -0.080 0.005 1.760 0.175 ;
|
||||||
|
LAYER mcon ;
|
||||||
|
RECT 0.065 0.005 0.235 0.175 ;
|
||||||
|
RECT 0.525 0.005 0.695 0.175 ;
|
||||||
|
RECT 0.985 0.005 1.155 0.175 ;
|
||||||
|
RECT 1.445 0.005 1.615 0.175 ;
|
||||||
|
LAYER met1 ;
|
||||||
|
RECT -0.080 -0.150 1.875 0.330 ;
|
||||||
|
END
|
||||||
|
END RBL_O
|
||||||
|
PIN PRE_R_b
|
||||||
|
ANTENNAGATEAREA 0.116025 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 1.495 0.585 1.830 0.855 ;
|
||||||
|
END
|
||||||
|
END PRE_R_b
|
||||||
|
PIN VPB
|
||||||
|
PORT
|
||||||
|
LAYER nwell ;
|
||||||
|
RECT -0.270 1.395 2.170 3.000 ;
|
||||||
|
END
|
||||||
|
END VPB
|
||||||
|
PIN VNB
|
||||||
|
PORT
|
||||||
|
LAYER pwell ;
|
||||||
|
RECT -0.055 0.195 1.395 1.105 ;
|
||||||
|
RECT 0.060 0.005 0.230 0.195 ;
|
||||||
|
END
|
||||||
|
END VNB
|
||||||
|
PIN VPWR
|
||||||
|
USE POWER ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT -0.080 2.725 1.760 2.895 ;
|
||||||
|
RECT 0.005 1.585 0.285 2.725 ;
|
||||||
|
RECT 1.055 1.585 1.315 2.725 ;
|
||||||
|
LAYER mcon ;
|
||||||
|
RECT 0.065 2.725 0.235 2.895 ;
|
||||||
|
RECT 0.525 2.725 0.695 2.895 ;
|
||||||
|
RECT 0.985 2.725 1.155 2.895 ;
|
||||||
|
RECT 1.445 2.725 1.615 2.895 ;
|
||||||
|
LAYER met1 ;
|
||||||
|
RECT -0.080 2.570 1.880 3.050 ;
|
||||||
|
END
|
||||||
|
END VPWR
|
||||||
|
END toysram_local_eval
|
||||||
|
END LIBRARY
|
||||||
|
|
Binary file not shown.
@ -0,0 +1,60 @@
|
|||||||
|
VERSION 5.7 ;
|
||||||
|
NOWIREEXTENSIONATPIN ON ;
|
||||||
|
DIVIDERCHAR "/" ;
|
||||||
|
BUSBITCHARS "[]" ;
|
||||||
|
MACRO toysram_local_pullup
|
||||||
|
CLASS BLOCK ;
|
||||||
|
FOREIGN toysram_local_pullup ;
|
||||||
|
ORIGIN 0.000 0.000 ;
|
||||||
|
SIZE 1.380 BY 2.720 ;
|
||||||
|
PIN RBL
|
||||||
|
ANTENNADIFFAREA 0.260000 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.720 1.485 1.050 2.465 ;
|
||||||
|
RECT 0.820 0.990 1.050 1.485 ;
|
||||||
|
END
|
||||||
|
END RBL
|
||||||
|
PIN PRE_b
|
||||||
|
ANTENNAGATEAREA 0.150000 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.320 1.075 0.650 1.315 ;
|
||||||
|
END
|
||||||
|
END PRE_b
|
||||||
|
PIN VPB
|
||||||
|
PORT
|
||||||
|
LAYER nwell ;
|
||||||
|
RECT -0.190 1.305 1.570 2.910 ;
|
||||||
|
END
|
||||||
|
END VPB
|
||||||
|
PIN VGND
|
||||||
|
USE GROUND ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.000 -0.085 1.380 0.085 ;
|
||||||
|
LAYER mcon ;
|
||||||
|
RECT 0.145 -0.085 0.315 0.085 ;
|
||||||
|
RECT 0.605 -0.085 0.775 0.085 ;
|
||||||
|
RECT 1.065 -0.085 1.235 0.085 ;
|
||||||
|
LAYER met1 ;
|
||||||
|
RECT 0.000 -0.240 1.380 0.240 ;
|
||||||
|
END
|
||||||
|
END VGND
|
||||||
|
PIN VPWR
|
||||||
|
USE POWER ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.000 2.635 1.380 2.805 ;
|
||||||
|
RECT 0.340 1.495 0.550 2.635 ;
|
||||||
|
LAYER mcon ;
|
||||||
|
RECT 0.145 2.635 0.315 2.805 ;
|
||||||
|
RECT 0.605 2.635 0.775 2.805 ;
|
||||||
|
RECT 1.065 2.635 1.235 2.805 ;
|
||||||
|
LAYER met1 ;
|
||||||
|
RECT 0.000 2.480 1.380 2.960 ;
|
||||||
|
END
|
||||||
|
END VPWR
|
||||||
|
END toysram_local_pullup
|
||||||
|
END LIBRARY
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 156 KiB |
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -0,0 +1,112 @@
|
|||||||
|
VERSION 5.7 ;
|
||||||
|
NOWIREEXTENSIONATPIN ON ;
|
||||||
|
DIVIDERCHAR "/" ;
|
||||||
|
BUSBITCHARS "[]" ;
|
||||||
|
MACRO 10T_toy_magic
|
||||||
|
CLASS BLOCK ;
|
||||||
|
FOREIGN 10T_toy_magic ;
|
||||||
|
ORIGIN 0.500 0.095 ;
|
||||||
|
SIZE 2.760 BY 1.350 ;
|
||||||
|
PIN RWL
|
||||||
|
DIRECTION INPUT ;
|
||||||
|
USE SIGNAL ;
|
||||||
|
ANTENNAGATEAREA 0.031500 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 1.895 0.415 2.045 0.585 ;
|
||||||
|
END
|
||||||
|
END RWL
|
||||||
|
PIN RWL
|
||||||
|
DIRECTION INPUT ;
|
||||||
|
USE SIGNAL ;
|
||||||
|
ANTENNAGATEAREA 0.031500 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT -0.285 0.415 -0.135 0.585 ;
|
||||||
|
END
|
||||||
|
END RWL
|
||||||
|
PIN WBL
|
||||||
|
DIRECTION INPUT ;
|
||||||
|
USE SIGNAL ;
|
||||||
|
ANTENNADIFFAREA 0.024175 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 1.820 0.825 1.895 0.970 ;
|
||||||
|
END
|
||||||
|
END WBL
|
||||||
|
PIN WBLb
|
||||||
|
DIRECTION INPUT ;
|
||||||
|
USE SIGNAL ;
|
||||||
|
ANTENNADIFFAREA 0.023100 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT -0.130 0.825 -0.055 0.965 ;
|
||||||
|
END
|
||||||
|
END WBLb
|
||||||
|
PIN RBL0
|
||||||
|
DIRECTION OUTPUT ;
|
||||||
|
USE SIGNAL ;
|
||||||
|
ANTENNADIFFAREA 0.045150 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 2.185 0.095 2.260 0.305 ;
|
||||||
|
END
|
||||||
|
END RBL0
|
||||||
|
PIN RBL1
|
||||||
|
DIRECTION OUTPUT ;
|
||||||
|
USE SIGNAL ;
|
||||||
|
ANTENNADIFFAREA 0.045150 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT -0.500 0.095 -0.425 0.305 ;
|
||||||
|
END
|
||||||
|
END RBL1
|
||||||
|
PIN VDD
|
||||||
|
DIRECTION INOUT ;
|
||||||
|
USE POWER ;
|
||||||
|
SHAPE ABUTMENT ;
|
||||||
|
PORT
|
||||||
|
LAYER nwell ;
|
||||||
|
RECT 0.490 0.625 1.255 1.105 ;
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.800 1.035 0.960 1.105 ;
|
||||||
|
RECT 0.810 1.025 0.950 1.035 ;
|
||||||
|
LAYER met1 ;
|
||||||
|
RECT -0.500 1.035 2.260 1.105 ;
|
||||||
|
END
|
||||||
|
END VDD
|
||||||
|
PIN GND
|
||||||
|
DIRECTION INOUT ;
|
||||||
|
USE GROUND ;
|
||||||
|
SHAPE ABUTMENT ;
|
||||||
|
PORT
|
||||||
|
LAYER pwell ;
|
||||||
|
RECT -0.500 0.395 0.350 1.255 ;
|
||||||
|
RECT 1.410 0.395 2.260 1.255 ;
|
||||||
|
RECT -0.500 -0.095 2.260 0.395 ;
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.810 -0.025 0.950 -0.015 ;
|
||||||
|
RECT 0.800 -0.095 0.960 -0.025 ;
|
||||||
|
LAYER met1 ;
|
||||||
|
RECT -0.500 -0.095 2.260 -0.025 ;
|
||||||
|
END
|
||||||
|
END GND
|
||||||
|
OBS
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.275 0.825 0.350 0.965 ;
|
||||||
|
RECT 0.490 0.775 0.565 0.915 ;
|
||||||
|
RECT 1.195 0.835 1.255 0.915 ;
|
||||||
|
POLYGON 1.195 0.835 1.255 0.835 1.255 0.775 ;
|
||||||
|
RECT 1.410 0.825 1.485 0.965 ;
|
||||||
|
RECT 0.220 0.305 0.370 0.475 ;
|
||||||
|
RECT 0.610 0.440 0.760 0.610 ;
|
||||||
|
RECT 1.000 0.440 1.150 0.610 ;
|
||||||
|
RECT 1.390 0.305 1.540 0.475 ;
|
||||||
|
RECT 0.485 0.220 0.535 0.255 ;
|
||||||
|
POLYGON 0.535 0.255 0.570 0.220 0.535 0.220 ;
|
||||||
|
RECT 0.485 0.095 0.570 0.220 ;
|
||||||
|
RECT 1.190 0.095 1.275 0.255 ;
|
||||||
|
END
|
||||||
|
END 10T_toy_magic
|
||||||
|
END LIBRARY
|
||||||
|
|
Binary file not shown.
@ -0,0 +1,138 @@
|
|||||||
|
VERSION 5.7 ;
|
||||||
|
NOWIREEXTENSIONATPIN ON ;
|
||||||
|
DIVIDERCHAR "/" ;
|
||||||
|
BUSBITCHARS "[]" ;
|
||||||
|
PROPERTYDEFINITIONS
|
||||||
|
MACRO maskLayoutSubType STRING ;
|
||||||
|
MACRO prCellType STRING ;
|
||||||
|
MACRO originalViewName STRING ;
|
||||||
|
END PROPERTYDEFINITIONS
|
||||||
|
|
||||||
|
MACRO sky130_fd_sc_hdll__nand2_1
|
||||||
|
CLASS CORE ;
|
||||||
|
FOREIGN sky130_fd_sc_hdll__nand2_1 ;
|
||||||
|
ORIGIN 0.000 0.000 ;
|
||||||
|
SIZE 1.840 BY 2.720 ;
|
||||||
|
SYMMETRY X Y R90 ;
|
||||||
|
SITE unithd ;
|
||||||
|
PIN A
|
||||||
|
DIRECTION INPUT ;
|
||||||
|
USE SIGNAL ;
|
||||||
|
ANTENNAGATEAREA 0.277500 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.990 1.075 1.375 1.325 ;
|
||||||
|
END
|
||||||
|
END A
|
||||||
|
PIN B
|
||||||
|
DIRECTION INPUT ;
|
||||||
|
USE SIGNAL ;
|
||||||
|
ANTENNAGATEAREA 0.277500 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.095 1.055 0.430 1.325 ;
|
||||||
|
END
|
||||||
|
END B
|
||||||
|
PIN VGND
|
||||||
|
DIRECTION INOUT ;
|
||||||
|
USE GROUND ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.085 0.085 0.395 0.885 ;
|
||||||
|
RECT 0.000 -0.085 1.840 0.085 ;
|
||||||
|
LAYER mcon ;
|
||||||
|
RECT 0.145 -0.085 0.315 0.085 ;
|
||||||
|
RECT 0.605 -0.085 0.775 0.085 ;
|
||||||
|
RECT 1.065 -0.085 1.235 0.085 ;
|
||||||
|
RECT 1.525 -0.085 1.695 0.085 ;
|
||||||
|
LAYER met1 ;
|
||||||
|
RECT 0.000 -0.240 1.840 0.240 ;
|
||||||
|
END
|
||||||
|
END VGND
|
||||||
|
PIN VNB
|
||||||
|
DIRECTION INOUT ;
|
||||||
|
USE GROUND ;
|
||||||
|
PORT
|
||||||
|
LAYER pwell ;
|
||||||
|
RECT 0.025 0.105 1.475 1.015 ;
|
||||||
|
RECT 0.140 -0.085 0.310 0.105 ;
|
||||||
|
END
|
||||||
|
END VNB
|
||||||
|
PIN VPB
|
||||||
|
DIRECTION INOUT ;
|
||||||
|
USE POWER ;
|
||||||
|
PORT
|
||||||
|
LAYER nwell ;
|
||||||
|
RECT -0.190 1.305 2.030 2.910 ;
|
||||||
|
END
|
||||||
|
END VPB
|
||||||
|
PIN VPWR
|
||||||
|
DIRECTION INOUT ;
|
||||||
|
USE POWER ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.000 2.635 1.840 2.805 ;
|
||||||
|
RECT 0.085 1.495 0.365 2.635 ;
|
||||||
|
RECT 1.135 1.495 1.395 2.635 ;
|
||||||
|
LAYER mcon ;
|
||||||
|
RECT 0.145 2.635 0.315 2.805 ;
|
||||||
|
RECT 0.605 2.635 0.775 2.805 ;
|
||||||
|
RECT 1.065 2.635 1.235 2.805 ;
|
||||||
|
RECT 1.525 2.635 1.695 2.805 ;
|
||||||
|
LAYER met1 ;
|
||||||
|
RECT 0.000 2.480 1.840 2.960 ;
|
||||||
|
END
|
||||||
|
END VPWR
|
||||||
|
PIN Y
|
||||||
|
DIRECTION OUTPUT ;
|
||||||
|
USE SIGNAL ;
|
||||||
|
ANTENNADIFFAREA 0.491500 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.535 1.485 0.915 2.465 ;
|
||||||
|
RECT 0.650 0.885 0.820 1.485 ;
|
||||||
|
RECT 0.650 0.255 1.395 0.885 ;
|
||||||
|
END
|
||||||
|
END Y
|
||||||
|
PROPERTY maskLayoutSubType "abstract" ;
|
||||||
|
PROPERTY prCellType "standard" ;
|
||||||
|
PROPERTY originalViewName "layout" ;
|
||||||
|
END sky130_fd_sc_hdll__nand2_1
|
||||||
|
MACRO local_eval
|
||||||
|
CLASS BLOCK ;
|
||||||
|
FOREIGN local_eval ;
|
||||||
|
ORIGIN 0.270 0.150 ;
|
||||||
|
SIZE 2.220 BY 3.200 ;
|
||||||
|
OBS
|
||||||
|
LAYER nwell ;
|
||||||
|
RECT -0.270 1.395 1.950 3.000 ;
|
||||||
|
LAYER pwell ;
|
||||||
|
RECT -0.055 0.195 1.395 1.105 ;
|
||||||
|
RECT 0.060 0.005 0.230 0.195 ;
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT -0.080 2.725 1.760 2.895 ;
|
||||||
|
RECT 0.005 1.585 0.285 2.725 ;
|
||||||
|
RECT 0.455 1.575 0.835 2.555 ;
|
||||||
|
RECT 1.055 1.585 1.315 2.725 ;
|
||||||
|
RECT 0.015 1.145 0.350 1.415 ;
|
||||||
|
RECT 0.570 0.975 0.740 1.575 ;
|
||||||
|
RECT 0.910 1.165 1.295 1.415 ;
|
||||||
|
RECT 0.005 0.175 0.315 0.975 ;
|
||||||
|
RECT 0.570 0.345 1.315 0.975 ;
|
||||||
|
RECT -0.080 0.005 1.760 0.175 ;
|
||||||
|
LAYER mcon ;
|
||||||
|
RECT 0.065 2.725 0.235 2.895 ;
|
||||||
|
RECT 0.525 2.725 0.695 2.895 ;
|
||||||
|
RECT 0.985 2.725 1.155 2.895 ;
|
||||||
|
RECT 1.445 2.725 1.615 2.895 ;
|
||||||
|
RECT 0.065 0.005 0.235 0.175 ;
|
||||||
|
RECT 0.525 0.005 0.695 0.175 ;
|
||||||
|
RECT 0.985 0.005 1.155 0.175 ;
|
||||||
|
RECT 1.445 0.005 1.615 0.175 ;
|
||||||
|
LAYER met1 ;
|
||||||
|
RECT -0.080 2.570 1.760 3.050 ;
|
||||||
|
RECT -0.080 -0.150 1.760 0.330 ;
|
||||||
|
END
|
||||||
|
END local_eval
|
||||||
|
END LIBRARY
|
||||||
|
|
@ -0,0 +1,8 @@
|
|||||||
|
magic
|
||||||
|
tech sky130B
|
||||||
|
timestamp 1667750849
|
||||||
|
use sky130_fd_sc_hdll__nand2_1 sky130_fd_sc_hdll__nand2_1_0 $PDKPATH/libs.ref/sky130_fd_sc_hdll/mag
|
||||||
|
timestamp 1667402666
|
||||||
|
transform 1 0 -8 0 1 9
|
||||||
|
box -19 -24 203 296
|
||||||
|
<< end >>
|
Binary file not shown.
@ -0,0 +1,8 @@
|
|||||||
|
magic
|
||||||
|
tech sky130B
|
||||||
|
timestamp 1667750849
|
||||||
|
use sky130_fd_sc_hdll__nand2_1 sky130_fd_sc_hdll__nand2_1_0 $PDKPATH/libs.ref/sky130_fd_sc_hdll/mag
|
||||||
|
timestamp 1667402666
|
||||||
|
transform 1 0 -8 0 1 9
|
||||||
|
box -19 -24 203 296
|
||||||
|
<< end >>
|
Binary file not shown.
Binary file not shown.
@ -0,0 +1,70 @@
|
|||||||
|
VERSION 5.7 ;
|
||||||
|
NOWIREEXTENSIONATPIN ON ;
|
||||||
|
DIVIDERCHAR "/" ;
|
||||||
|
BUSBITCHARS "[]" ;
|
||||||
|
MACRO sky130_fd_sc_hd__inv_1
|
||||||
|
CLASS BLOCK ;
|
||||||
|
FOREIGN sky130_fd_sc_hd__inv_1 ;
|
||||||
|
ORIGIN 0.000 0.000 ;
|
||||||
|
SIZE 1.380 BY 2.720 ;
|
||||||
|
PIN Y
|
||||||
|
ANTENNADIFFAREA 0.429000 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.720 1.485 1.050 2.465 ;
|
||||||
|
RECT 0.820 0.885 1.050 1.485 ;
|
||||||
|
RECT 0.720 0.255 1.050 0.885 ;
|
||||||
|
END
|
||||||
|
END Y
|
||||||
|
PIN A
|
||||||
|
ANTENNAGATEAREA 0.247500 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.320 1.075 0.650 1.315 ;
|
||||||
|
END
|
||||||
|
END A
|
||||||
|
PIN VPB
|
||||||
|
PORT
|
||||||
|
LAYER nwell ;
|
||||||
|
RECT -0.190 1.305 1.570 2.910 ;
|
||||||
|
END
|
||||||
|
END VPB
|
||||||
|
PIN VNB
|
||||||
|
PORT
|
||||||
|
LAYER pwell ;
|
||||||
|
RECT 0.210 0.105 1.140 1.015 ;
|
||||||
|
RECT 0.210 0.085 0.315 0.105 ;
|
||||||
|
RECT 0.145 -0.085 0.315 0.085 ;
|
||||||
|
END
|
||||||
|
END VNB
|
||||||
|
PIN VGND
|
||||||
|
USE GROUND ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.320 0.085 0.550 0.905 ;
|
||||||
|
RECT 0.000 -0.085 1.380 0.085 ;
|
||||||
|
LAYER mcon ;
|
||||||
|
RECT 0.145 -0.085 0.315 0.085 ;
|
||||||
|
RECT 0.605 -0.085 0.775 0.085 ;
|
||||||
|
RECT 1.065 -0.085 1.235 0.085 ;
|
||||||
|
LAYER met1 ;
|
||||||
|
RECT 0.000 -0.240 1.380 0.240 ;
|
||||||
|
END
|
||||||
|
END VGND
|
||||||
|
PIN VPWR
|
||||||
|
USE POWER ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.000 2.635 1.380 2.805 ;
|
||||||
|
RECT 0.340 1.495 0.550 2.635 ;
|
||||||
|
LAYER mcon ;
|
||||||
|
RECT 0.145 2.635 0.315 2.805 ;
|
||||||
|
RECT 0.605 2.635 0.775 2.805 ;
|
||||||
|
RECT 1.065 2.635 1.235 2.805 ;
|
||||||
|
LAYER met1 ;
|
||||||
|
RECT 0.000 2.480 1.380 2.960 ;
|
||||||
|
END
|
||||||
|
END VPWR
|
||||||
|
END sky130_fd_sc_hd__inv_1
|
||||||
|
END LIBRARY
|
||||||
|
|
@ -0,0 +1,79 @@
|
|||||||
|
VERSION 5.7 ;
|
||||||
|
NOWIREEXTENSIONATPIN ON ;
|
||||||
|
DIVIDERCHAR "/" ;
|
||||||
|
BUSBITCHARS "[]" ;
|
||||||
|
MACRO sky130_fd_sc_hdll__nand2_1
|
||||||
|
CLASS BLOCK ;
|
||||||
|
FOREIGN sky130_fd_sc_hdll__nand2_1 ;
|
||||||
|
ORIGIN 0.000 0.000 ;
|
||||||
|
SIZE 1.840 BY 2.720 ;
|
||||||
|
PIN Y
|
||||||
|
ANTENNADIFFAREA 0.491500 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.535 1.485 0.915 2.465 ;
|
||||||
|
RECT 0.650 0.885 0.820 1.485 ;
|
||||||
|
RECT 0.650 0.255 1.395 0.885 ;
|
||||||
|
END
|
||||||
|
END Y
|
||||||
|
PIN B
|
||||||
|
ANTENNAGATEAREA 0.277500 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.095 1.055 0.430 1.325 ;
|
||||||
|
END
|
||||||
|
END B
|
||||||
|
PIN A
|
||||||
|
ANTENNAGATEAREA 0.277500 ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.990 1.075 1.375 1.325 ;
|
||||||
|
END
|
||||||
|
END A
|
||||||
|
PIN VPB
|
||||||
|
PORT
|
||||||
|
LAYER nwell ;
|
||||||
|
RECT -0.190 1.305 2.030 2.910 ;
|
||||||
|
END
|
||||||
|
END VPB
|
||||||
|
PIN VNB
|
||||||
|
PORT
|
||||||
|
LAYER pwell ;
|
||||||
|
RECT 0.025 0.105 1.475 1.015 ;
|
||||||
|
RECT 0.140 -0.085 0.310 0.105 ;
|
||||||
|
END
|
||||||
|
END VNB
|
||||||
|
PIN VGND
|
||||||
|
USE GROUND ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.085 0.085 0.395 0.885 ;
|
||||||
|
RECT 0.000 -0.085 1.840 0.085 ;
|
||||||
|
LAYER mcon ;
|
||||||
|
RECT 0.145 -0.085 0.315 0.085 ;
|
||||||
|
RECT 0.605 -0.085 0.775 0.085 ;
|
||||||
|
RECT 1.065 -0.085 1.235 0.085 ;
|
||||||
|
RECT 1.525 -0.085 1.695 0.085 ;
|
||||||
|
LAYER met1 ;
|
||||||
|
RECT 0.000 -0.240 1.840 0.240 ;
|
||||||
|
END
|
||||||
|
END VGND
|
||||||
|
PIN VPWR
|
||||||
|
USE POWER ;
|
||||||
|
PORT
|
||||||
|
LAYER li1 ;
|
||||||
|
RECT 0.000 2.635 1.840 2.805 ;
|
||||||
|
RECT 0.085 1.495 0.365 2.635 ;
|
||||||
|
RECT 1.135 1.495 1.395 2.635 ;
|
||||||
|
LAYER mcon ;
|
||||||
|
RECT 0.145 2.635 0.315 2.805 ;
|
||||||
|
RECT 0.605 2.635 0.775 2.805 ;
|
||||||
|
RECT 1.065 2.635 1.235 2.805 ;
|
||||||
|
RECT 1.525 2.635 1.695 2.805 ;
|
||||||
|
LAYER met1 ;
|
||||||
|
RECT 0.000 2.480 1.840 2.960 ;
|
||||||
|
END
|
||||||
|
END VPWR
|
||||||
|
END sky130_fd_sc_hdll__nand2_1
|
||||||
|
END LIBRARY
|
||||||
|
|
@ -0,0 +1,494 @@
|
|||||||
|
[<gdspy.library.Cell object at 0x7f228c1e3fa0>]
|
||||||
|
Cell 0 [[-0.27 -0.15]
|
||||||
|
[ 1.95 3.05]]
|
||||||
|
Dependencies (1)
|
||||||
|
{<gdspy.library.Cell object at 0x7f228e0f0a60>}
|
||||||
|
Paths (0)
|
||||||
|
Labels (10)
|
||||||
|
Label ("Y", at (0.6050000000000001, 1.655), rotation None, magnification 0.125, reflection False, layer 67, texttype 5)
|
||||||
|
Label ("Y", at (0.6050000000000001, 1.995), rotation None, magnification 0.125, reflection False, layer 67, texttype 5)
|
||||||
|
Label ("Y", at (1.045, 0.87), rotation None, magnification 0.125, reflection False, layer 67, texttype 5)
|
||||||
|
Label ("B", at (0.14500000000000002, 1.28), rotation None, magnification 0.125, reflection False, layer 67, texttype 5)
|
||||||
|
Label ("A", at (1.065, 1.28), rotation None, magnification 0.125, reflection False, layer 67, texttype 5)
|
||||||
|
Label ("VPB", at (0.14500000000000002, 2.81), rotation None, magnification 0.1, reflection False, layer 64, texttype 5)
|
||||||
|
Label ("VNB", at (0.14500000000000002, 0.09), rotation None, magnification 0.1, reflection False, layer 64, texttype 59)
|
||||||
|
Label ("VGND", at (0.15000000000000002, 0.09), rotation None, magnification 0.1, reflection False, layer 68, texttype 5)
|
||||||
|
Label ("VPWR", at (0.14500000000000002, 2.81), rotation None, magnification 0.1, reflection False, layer 68, texttype 5)
|
||||||
|
Label ("nand2_1", at (-0.08, 0.09), rotation 90.0, magnification 0.1, reflection False, layer 83, texttype 44)
|
||||||
|
Data Types (5)
|
||||||
|
0
|
||||||
|
16
|
||||||
|
4
|
||||||
|
20
|
||||||
|
44
|
||||||
|
Layers (13)
|
||||||
|
Polygon Sets (50)
|
||||||
|
[array([[0.535, 1.5 ],
|
||||||
|
[0.525, 1.5 ],
|
||||||
|
[0.525, 2.705],
|
||||||
|
[0.345, 2.705],
|
||||||
|
[0.345, 1.5 ],
|
||||||
|
[0.335, 1.5 ],
|
||||||
|
[0.335, 1.415],
|
||||||
|
[0.025, 1.415],
|
||||||
|
[0.025, 1.085],
|
||||||
|
[0.385, 1.085],
|
||||||
|
[0.385, 0.195],
|
||||||
|
[0.535, 0.195]])] [66] [20]
|
||||||
|
[array([[1.295, 1.415],
|
||||||
|
[1.005, 1.415],
|
||||||
|
[1.005, 1.5 ],
|
||||||
|
[0.995, 1.5 ],
|
||||||
|
[0.995, 2.705],
|
||||||
|
[0.815, 2.705],
|
||||||
|
[0.815, 1.5 ],
|
||||||
|
[0.805, 1.5 ],
|
||||||
|
[0.805, 0.195],
|
||||||
|
[0.955, 0.195],
|
||||||
|
[0.955, 1.085],
|
||||||
|
[1.295, 1.085]])] [66] [20]
|
||||||
|
[array([[0.065, 2.725],
|
||||||
|
[0.235, 2.725],
|
||||||
|
[0.235, 2.895],
|
||||||
|
[0.065, 2.895]])] [67] [44]
|
||||||
|
[array([[0.065, 0.005],
|
||||||
|
[0.235, 0.005],
|
||||||
|
[0.235, 0.175],
|
||||||
|
[0.065, 0.175]])] [67] [44]
|
||||||
|
[array([[0.525, 2.725],
|
||||||
|
[0.695, 2.725],
|
||||||
|
[0.695, 2.895],
|
||||||
|
[0.525, 2.895]])] [67] [44]
|
||||||
|
[array([[0.525, 0.005],
|
||||||
|
[0.695, 0.005],
|
||||||
|
[0.695, 0.175],
|
||||||
|
[0.525, 0.175]])] [67] [44]
|
||||||
|
[array([[0.985, 2.725],
|
||||||
|
[1.155, 2.725],
|
||||||
|
[1.155, 2.895],
|
||||||
|
[0.985, 2.895]])] [67] [44]
|
||||||
|
[array([[0.985, 0.005],
|
||||||
|
[1.155, 0.005],
|
||||||
|
[1.155, 0.175],
|
||||||
|
[0.985, 0.175]])] [67] [44]
|
||||||
|
[array([[1.445, 2.725],
|
||||||
|
[1.615, 2.725],
|
||||||
|
[1.615, 2.895],
|
||||||
|
[1.445, 2.895]])] [67] [44]
|
||||||
|
[array([[1.445, 0.005],
|
||||||
|
[1.615, 0.005],
|
||||||
|
[1.615, 0.175],
|
||||||
|
[1.445, 0.175]])] [67] [44]
|
||||||
|
[array([[-0.08, 0.09],
|
||||||
|
[ 1.76, 0.09],
|
||||||
|
[ 1.76, 2.81],
|
||||||
|
[-0.08, 2.81]])] [236] [0]
|
||||||
|
[array([[0.06 , 2.725],
|
||||||
|
[0.06 , 2.895],
|
||||||
|
[0.23 , 2.895],
|
||||||
|
[0.23 , 2.725]])] [64] [16]
|
||||||
|
[array([[0.06 , 0.005],
|
||||||
|
[0.06 , 0.175],
|
||||||
|
[0.23 , 0.175],
|
||||||
|
[0.23 , 0.005]])] [122] [16]
|
||||||
|
[array([[0.06 , 0.005],
|
||||||
|
[0.06 , 0.175],
|
||||||
|
[0.23 , 0.175],
|
||||||
|
[0.23 , 0.005]])] [68] [16]
|
||||||
|
[array([[0.06 , 2.725],
|
||||||
|
[0.06 , 2.895],
|
||||||
|
[0.23 , 2.895],
|
||||||
|
[0.23 , 2.725]])] [68] [16]
|
||||||
|
[array([[ 1.76 , 0.175],
|
||||||
|
[ 0.315, 0.175],
|
||||||
|
[ 0.315, 0.975],
|
||||||
|
[ 0.005, 0.975],
|
||||||
|
[ 0.005, 0.175],
|
||||||
|
[-0.08 , 0.175],
|
||||||
|
[-0.08 , 0.005],
|
||||||
|
[ 1.76 , 0.005]])] [67] [20]
|
||||||
|
[array([[ 1.76 , 2.895],
|
||||||
|
[-0.08 , 2.895],
|
||||||
|
[-0.08 , 2.725],
|
||||||
|
[ 0.005, 2.725],
|
||||||
|
[ 0.005, 1.585],
|
||||||
|
[ 0.285, 1.585],
|
||||||
|
[ 0.285, 2.725],
|
||||||
|
[ 1.055, 2.725],
|
||||||
|
[ 1.055, 1.585],
|
||||||
|
[ 1.315, 1.585],
|
||||||
|
[ 1.315, 2.725],
|
||||||
|
[ 1.76 , 2.725]])] [67] [20]
|
||||||
|
[array([[0.015, 1.145],
|
||||||
|
[0.015, 1.415],
|
||||||
|
[0.35 , 1.415],
|
||||||
|
[0.35 , 1.145]])] [67] [20]
|
||||||
|
[array([[0.91 , 1.165],
|
||||||
|
[0.91 , 1.415],
|
||||||
|
[1.295, 1.415],
|
||||||
|
[1.295, 1.165]])] [67] [20]
|
||||||
|
[array([[1.315, 0.975],
|
||||||
|
[0.74 , 0.975],
|
||||||
|
[0.74 , 1.575],
|
||||||
|
[0.835, 1.575],
|
||||||
|
[0.835, 2.555],
|
||||||
|
[0.455, 2.555],
|
||||||
|
[0.455, 1.575],
|
||||||
|
[0.57 , 1.575],
|
||||||
|
[0.57 , 0.345],
|
||||||
|
[1.315, 0.345]])] [67] [20]
|
||||||
|
[array([[-0.08, 2.57],
|
||||||
|
[ 1.76, 2.57],
|
||||||
|
[ 1.76, 3.05],
|
||||||
|
[-0.08, 3.05]])] [68] [20]
|
||||||
|
[array([[-0.08, -0.15],
|
||||||
|
[ 1.76, -0.15],
|
||||||
|
[ 1.76, 0.33],
|
||||||
|
[-0.08, 0.33]])] [68] [20]
|
||||||
|
[array([[1.055, 0.385],
|
||||||
|
[1.225, 0.385],
|
||||||
|
[1.225, 0.555],
|
||||||
|
[1.055, 0.555]])] [66] [44]
|
||||||
|
[array([[1.055, 0.725],
|
||||||
|
[1.225, 0.725],
|
||||||
|
[1.225, 0.895],
|
||||||
|
[1.055, 0.895]])] [66] [44]
|
||||||
|
[array([[0.115, 2.345],
|
||||||
|
[0.285, 2.345],
|
||||||
|
[0.285, 2.515],
|
||||||
|
[0.115, 2.515]])] [66] [44]
|
||||||
|
[array([[0.115, 2.005],
|
||||||
|
[0.285, 2.005],
|
||||||
|
[0.285, 2.175],
|
||||||
|
[0.115, 2.175]])] [66] [44]
|
||||||
|
[array([[0.115, 1.665],
|
||||||
|
[0.285, 1.665],
|
||||||
|
[0.285, 1.835],
|
||||||
|
[0.115, 1.835]])] [66] [44]
|
||||||
|
[array([[0.115, 0.725],
|
||||||
|
[0.285, 0.725],
|
||||||
|
[0.285, 0.895],
|
||||||
|
[0.115, 0.895]])] [66] [44]
|
||||||
|
[array([[0.115, 0.385],
|
||||||
|
[0.285, 0.385],
|
||||||
|
[0.285, 0.555],
|
||||||
|
[0.115, 0.555]])] [66] [44]
|
||||||
|
[array([[0.585, 2.345],
|
||||||
|
[0.755, 2.345],
|
||||||
|
[0.755, 2.515],
|
||||||
|
[0.585, 2.515]])] [66] [44]
|
||||||
|
[array([[0.585, 2.005],
|
||||||
|
[0.755, 2.005],
|
||||||
|
[0.755, 2.175],
|
||||||
|
[0.585, 2.175]])] [66] [44]
|
||||||
|
[array([[0.585, 1.665],
|
||||||
|
[0.755, 1.665],
|
||||||
|
[0.755, 1.835],
|
||||||
|
[0.585, 1.835]])] [66] [44]
|
||||||
|
[array([[1.04 , 1.165],
|
||||||
|
[1.21 , 1.165],
|
||||||
|
[1.21 , 1.335],
|
||||||
|
[1.04 , 1.335]])] [66] [44]
|
||||||
|
[array([[1.055, 2.345],
|
||||||
|
[1.225, 2.345],
|
||||||
|
[1.225, 2.515],
|
||||||
|
[1.055, 2.515]])] [66] [44]
|
||||||
|
[array([[0.1 , 1.165],
|
||||||
|
[0.27 , 1.165],
|
||||||
|
[0.27 , 1.335],
|
||||||
|
[0.1 , 1.335]])] [66] [44]
|
||||||
|
[array([[1.055, 2.005],
|
||||||
|
[1.225, 2.005],
|
||||||
|
[1.225, 2.175],
|
||||||
|
[1.055, 2.175]])] [66] [44]
|
||||||
|
[array([[1.055, 1.665],
|
||||||
|
[1.225, 1.665],
|
||||||
|
[1.225, 1.835],
|
||||||
|
[1.055, 1.835]])] [66] [44]
|
||||||
|
[array([[1.08 , 1.195],
|
||||||
|
[1.08 , 1.365],
|
||||||
|
[1.25 , 1.365],
|
||||||
|
[1.25 , 1.195]])] [67] [16]
|
||||||
|
[array([[0.57, 1.57],
|
||||||
|
[0.57, 1.74],
|
||||||
|
[0.74, 1.74],
|
||||||
|
[0.74, 1.57]])] [67] [16]
|
||||||
|
[array([[0.57, 1.91],
|
||||||
|
[0.57, 2.08],
|
||||||
|
[0.74, 2.08],
|
||||||
|
[0.74, 1.91]])] [67] [16]
|
||||||
|
[array([[0.98 , 0.795],
|
||||||
|
[0.98 , 0.965],
|
||||||
|
[1.15 , 0.965],
|
||||||
|
[1.15 , 0.795]])] [67] [16]
|
||||||
|
[array([[0.06 , 1.195],
|
||||||
|
[0.06 , 1.365],
|
||||||
|
[0.23 , 1.365],
|
||||||
|
[0.23 , 1.195]])] [67] [16]
|
||||||
|
[array([[0.075, 1.575],
|
||||||
|
[0.075, 2.575],
|
||||||
|
[1.265, 2.575],
|
||||||
|
[1.265, 1.575]])] [65] [20]
|
||||||
|
[array([[0.075, 0.325],
|
||||||
|
[0.075, 0.975],
|
||||||
|
[1.265, 0.975],
|
||||||
|
[1.265, 0.325]])] [65] [20]
|
||||||
|
[array([[-0.08, 0.09],
|
||||||
|
[ 1.76, 0.09],
|
||||||
|
[ 1.76, 2.81],
|
||||||
|
[-0.08, 2.81]])] [81] [4]
|
||||||
|
[array([[-0.08 , 1.445],
|
||||||
|
[ 1.76 , 1.445],
|
||||||
|
[ 1.76 , 3. ],
|
||||||
|
[-0.08 , 3. ]])] [94] [20]
|
||||||
|
[array([[-0.27 , 1.395],
|
||||||
|
[ 1.95 , 1.395],
|
||||||
|
[ 1.95 , 3. ],
|
||||||
|
[-0.27 , 3. ]])] [64] [20]
|
||||||
|
[array([[-0.08 , -0.1 ],
|
||||||
|
[ 1.76 , -0.1 ],
|
||||||
|
[ 1.76 , 1.105],
|
||||||
|
[-0.08 , 1.105]])] [93] [44]
|
||||||
|
[array([[-0.08, 1.34],
|
||||||
|
[ 1.76, 1.34],
|
||||||
|
[ 1.76, 2.81],
|
||||||
|
[-0.08, 2.81]])] [78] [44]
|
||||||
|
[array([[-0.08 , 1.065],
|
||||||
|
[ 1.76 , 1.065],
|
||||||
|
[ 1.76 , 1.435],
|
||||||
|
[-0.08 , 1.435]])] [95] [20]
|
||||||
|
Polygons (50)
|
||||||
|
[[0.535 1.5 ]
|
||||||
|
[0.525 1.5 ]
|
||||||
|
[0.525 2.705]
|
||||||
|
[0.345 2.705]
|
||||||
|
[0.345 1.5 ]
|
||||||
|
[0.335 1.5 ]
|
||||||
|
[0.335 1.415]
|
||||||
|
[0.025 1.415]
|
||||||
|
[0.025 1.085]
|
||||||
|
[0.385 1.085]
|
||||||
|
[0.385 0.195]
|
||||||
|
[0.535 0.195]]
|
||||||
|
[[1.295 1.415]
|
||||||
|
[1.005 1.415]
|
||||||
|
[1.005 1.5 ]
|
||||||
|
[0.995 1.5 ]
|
||||||
|
[0.995 2.705]
|
||||||
|
[0.815 2.705]
|
||||||
|
[0.815 1.5 ]
|
||||||
|
[0.805 1.5 ]
|
||||||
|
[0.805 0.195]
|
||||||
|
[0.955 0.195]
|
||||||
|
[0.955 1.085]
|
||||||
|
[1.295 1.085]]
|
||||||
|
[[0.065 2.725]
|
||||||
|
[0.235 2.725]
|
||||||
|
[0.235 2.895]
|
||||||
|
[0.065 2.895]]
|
||||||
|
[[0.065 0.005]
|
||||||
|
[0.235 0.005]
|
||||||
|
[0.235 0.175]
|
||||||
|
[0.065 0.175]]
|
||||||
|
[[0.525 2.725]
|
||||||
|
[0.695 2.725]
|
||||||
|
[0.695 2.895]
|
||||||
|
[0.525 2.895]]
|
||||||
|
[[0.525 0.005]
|
||||||
|
[0.695 0.005]
|
||||||
|
[0.695 0.175]
|
||||||
|
[0.525 0.175]]
|
||||||
|
[[0.985 2.725]
|
||||||
|
[1.155 2.725]
|
||||||
|
[1.155 2.895]
|
||||||
|
[0.985 2.895]]
|
||||||
|
[[0.985 0.005]
|
||||||
|
[1.155 0.005]
|
||||||
|
[1.155 0.175]
|
||||||
|
[0.985 0.175]]
|
||||||
|
[[1.445 2.725]
|
||||||
|
[1.615 2.725]
|
||||||
|
[1.615 2.895]
|
||||||
|
[1.445 2.895]]
|
||||||
|
[[1.445 0.005]
|
||||||
|
[1.615 0.005]
|
||||||
|
[1.615 0.175]
|
||||||
|
[1.445 0.175]]
|
||||||
|
[[-0.08 0.09]
|
||||||
|
[ 1.76 0.09]
|
||||||
|
[ 1.76 2.81]
|
||||||
|
[-0.08 2.81]]
|
||||||
|
[[0.06 2.725]
|
||||||
|
[0.06 2.895]
|
||||||
|
[0.23 2.895]
|
||||||
|
[0.23 2.725]]
|
||||||
|
[[0.06 0.005]
|
||||||
|
[0.06 0.175]
|
||||||
|
[0.23 0.175]
|
||||||
|
[0.23 0.005]]
|
||||||
|
[[0.06 0.005]
|
||||||
|
[0.06 0.175]
|
||||||
|
[0.23 0.175]
|
||||||
|
[0.23 0.005]]
|
||||||
|
[[0.06 2.725]
|
||||||
|
[0.06 2.895]
|
||||||
|
[0.23 2.895]
|
||||||
|
[0.23 2.725]]
|
||||||
|
[[ 1.76 0.175]
|
||||||
|
[ 0.315 0.175]
|
||||||
|
[ 0.315 0.975]
|
||||||
|
[ 0.005 0.975]
|
||||||
|
[ 0.005 0.175]
|
||||||
|
[-0.08 0.175]
|
||||||
|
[-0.08 0.005]
|
||||||
|
[ 1.76 0.005]]
|
||||||
|
[[ 1.76 2.895]
|
||||||
|
[-0.08 2.895]
|
||||||
|
[-0.08 2.725]
|
||||||
|
[ 0.005 2.725]
|
||||||
|
[ 0.005 1.585]
|
||||||
|
[ 0.285 1.585]
|
||||||
|
[ 0.285 2.725]
|
||||||
|
[ 1.055 2.725]
|
||||||
|
[ 1.055 1.585]
|
||||||
|
[ 1.315 1.585]
|
||||||
|
[ 1.315 2.725]
|
||||||
|
[ 1.76 2.725]]
|
||||||
|
[[0.015 1.145]
|
||||||
|
[0.015 1.415]
|
||||||
|
[0.35 1.415]
|
||||||
|
[0.35 1.145]]
|
||||||
|
[[0.91 1.165]
|
||||||
|
[0.91 1.415]
|
||||||
|
[1.295 1.415]
|
||||||
|
[1.295 1.165]]
|
||||||
|
[[1.315 0.975]
|
||||||
|
[0.74 0.975]
|
||||||
|
[0.74 1.575]
|
||||||
|
[0.835 1.575]
|
||||||
|
[0.835 2.555]
|
||||||
|
[0.455 2.555]
|
||||||
|
[0.455 1.575]
|
||||||
|
[0.57 1.575]
|
||||||
|
[0.57 0.345]
|
||||||
|
[1.315 0.345]]
|
||||||
|
[[-0.08 2.57]
|
||||||
|
[ 1.76 2.57]
|
||||||
|
[ 1.76 3.05]
|
||||||
|
[-0.08 3.05]]
|
||||||
|
[[-0.08 -0.15]
|
||||||
|
[ 1.76 -0.15]
|
||||||
|
[ 1.76 0.33]
|
||||||
|
[-0.08 0.33]]
|
||||||
|
[[1.055 0.385]
|
||||||
|
[1.225 0.385]
|
||||||
|
[1.225 0.555]
|
||||||
|
[1.055 0.555]]
|
||||||
|
[[1.055 0.725]
|
||||||
|
[1.225 0.725]
|
||||||
|
[1.225 0.895]
|
||||||
|
[1.055 0.895]]
|
||||||
|
[[0.115 2.345]
|
||||||
|
[0.285 2.345]
|
||||||
|
[0.285 2.515]
|
||||||
|
[0.115 2.515]]
|
||||||
|
[[0.115 2.005]
|
||||||
|
[0.285 2.005]
|
||||||
|
[0.285 2.175]
|
||||||
|
[0.115 2.175]]
|
||||||
|
[[0.115 1.665]
|
||||||
|
[0.285 1.665]
|
||||||
|
[0.285 1.835]
|
||||||
|
[0.115 1.835]]
|
||||||
|
[[0.115 0.725]
|
||||||
|
[0.285 0.725]
|
||||||
|
[0.285 0.895]
|
||||||
|
[0.115 0.895]]
|
||||||
|
[[0.115 0.385]
|
||||||
|
[0.285 0.385]
|
||||||
|
[0.285 0.555]
|
||||||
|
[0.115 0.555]]
|
||||||
|
[[0.585 2.345]
|
||||||
|
[0.755 2.345]
|
||||||
|
[0.755 2.515]
|
||||||
|
[0.585 2.515]]
|
||||||
|
[[0.585 2.005]
|
||||||
|
[0.755 2.005]
|
||||||
|
[0.755 2.175]
|
||||||
|
[0.585 2.175]]
|
||||||
|
[[0.585 1.665]
|
||||||
|
[0.755 1.665]
|
||||||
|
[0.755 1.835]
|
||||||
|
[0.585 1.835]]
|
||||||
|
[[1.04 1.165]
|
||||||
|
[1.21 1.165]
|
||||||
|
[1.21 1.335]
|
||||||
|
[1.04 1.335]]
|
||||||
|
[[1.055 2.345]
|
||||||
|
[1.225 2.345]
|
||||||
|
[1.225 2.515]
|
||||||
|
[1.055 2.515]]
|
||||||
|
[[0.1 1.165]
|
||||||
|
[0.27 1.165]
|
||||||
|
[0.27 1.335]
|
||||||
|
[0.1 1.335]]
|
||||||
|
[[1.055 2.005]
|
||||||
|
[1.225 2.005]
|
||||||
|
[1.225 2.175]
|
||||||
|
[1.055 2.175]]
|
||||||
|
[[1.055 1.665]
|
||||||
|
[1.225 1.665]
|
||||||
|
[1.225 1.835]
|
||||||
|
[1.055 1.835]]
|
||||||
|
[[1.08 1.195]
|
||||||
|
[1.08 1.365]
|
||||||
|
[1.25 1.365]
|
||||||
|
[1.25 1.195]]
|
||||||
|
[[0.57 1.57]
|
||||||
|
[0.57 1.74]
|
||||||
|
[0.74 1.74]
|
||||||
|
[0.74 1.57]]
|
||||||
|
[[0.57 1.91]
|
||||||
|
[0.57 2.08]
|
||||||
|
[0.74 2.08]
|
||||||
|
[0.74 1.91]]
|
||||||
|
[[0.98 0.795]
|
||||||
|
[0.98 0.965]
|
||||||
|
[1.15 0.965]
|
||||||
|
[1.15 0.795]]
|
||||||
|
[[0.06 1.195]
|
||||||
|
[0.06 1.365]
|
||||||
|
[0.23 1.365]
|
||||||
|
[0.23 1.195]]
|
||||||
|
[[0.075 1.575]
|
||||||
|
[0.075 2.575]
|
||||||
|
[1.265 2.575]
|
||||||
|
[1.265 1.575]]
|
||||||
|
[[0.075 0.325]
|
||||||
|
[0.075 0.975]
|
||||||
|
[1.265 0.975]
|
||||||
|
[1.265 0.325]]
|
||||||
|
[[-0.08 0.09]
|
||||||
|
[ 1.76 0.09]
|
||||||
|
[ 1.76 2.81]
|
||||||
|
[-0.08 2.81]]
|
||||||
|
[[-0.08 1.445]
|
||||||
|
[ 1.76 1.445]
|
||||||
|
[ 1.76 3. ]
|
||||||
|
[-0.08 3. ]]
|
||||||
|
[[-0.27 1.395]
|
||||||
|
[ 1.95 1.395]
|
||||||
|
[ 1.95 3. ]
|
||||||
|
[-0.27 3. ]]
|
||||||
|
[[-0.08 -0.1 ]
|
||||||
|
[ 1.76 -0.1 ]
|
||||||
|
[ 1.76 1.105]
|
||||||
|
[-0.08 1.105]]
|
||||||
|
[[-0.08 1.34]
|
||||||
|
[ 1.76 1.34]
|
||||||
|
[ 1.76 2.81]
|
||||||
|
[-0.08 2.81]]
|
||||||
|
[[-0.08 1.065]
|
||||||
|
[ 1.76 1.065]
|
||||||
|
[ 1.76 1.435]
|
||||||
|
[-0.08 1.435]]
|
@ -0,0 +1,172 @@
|
|||||||
|
#
|
||||||
|
# Cadence-compatibility bindings except where marked.
|
||||||
|
#
|
||||||
|
macro f "view" ;# zoom to fit window
|
||||||
|
macro ^z "zoom 0.5" ;# zoom in
|
||||||
|
macro Z "zoom 2" ;# zoom out
|
||||||
|
macro B "popstack" ;# up hierarchy
|
||||||
|
macro X {pushstack [cellname list self]} ;# down hierarchy
|
||||||
|
macro x "edit" ;# down hierarchy, edit-in-place
|
||||||
|
macro b "select top cell ; edit" ;# up hierarchy from edit-in-place
|
||||||
|
macro p "tool wire; magic::trackwire %W pick" ;# path
|
||||||
|
macro ^r "redraw"
|
||||||
|
macro ^f "unexpand"
|
||||||
|
macro F "expand"
|
||||||
|
macro ^a "select area"
|
||||||
|
macro ^d "select clear"
|
||||||
|
macro k "magic::measure"
|
||||||
|
macro K "magic::unmeasure"
|
||||||
|
macro i "magic::promptload getcell"
|
||||||
|
macro l "magic::update_texthelper ; wm deiconify .texthelper ; raise .texthelper"
|
||||||
|
macro O "magic::clock"
|
||||||
|
macro <del> "magic::delete"
|
||||||
|
|
||||||
|
# Toolkit parameter dialog
|
||||||
|
macro q "magic::gencell {} ; raise .params"
|
||||||
|
#
|
||||||
|
# The following should be already implemented as existing Magic bindings
|
||||||
|
#
|
||||||
|
macro u "undo"
|
||||||
|
macro U "redo"
|
||||||
|
macro m "move"
|
||||||
|
macro c "copy"
|
||||||
|
#
|
||||||
|
# Compatibility with Electric; Cadence bindings are on function keys and
|
||||||
|
# do not work through the VNC.
|
||||||
|
macro ^s "magic::promptsave magic" ;# save dialog menu
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bertrand's bindings follow except where marked.
|
||||||
|
#
|
||||||
|
macro < sideways
|
||||||
|
macro ^ upsidedown
|
||||||
|
#
|
||||||
|
# Set grid at 1 micron
|
||||||
|
#
|
||||||
|
macro 0 "grid on ; grid 1l" ;# Grid at 0.5um (1 lambda)
|
||||||
|
# macro ^f "feedback clear" ;# conflicts with Cadence binding
|
||||||
|
#
|
||||||
|
# Paint/Erase macros
|
||||||
|
#
|
||||||
|
macro 1 "paint m1"
|
||||||
|
macro ! "erase m1"
|
||||||
|
macro 2 "paint m2"
|
||||||
|
macro @ "erase m2"
|
||||||
|
macro 3 "paint m3"
|
||||||
|
macro # "erase m3"
|
||||||
|
macro 4 "paint m4"
|
||||||
|
macro $ "erase m4"
|
||||||
|
macro 5 "paint mtp"
|
||||||
|
macro % "erase mtp"
|
||||||
|
|
||||||
|
macro 7 "paint poly"
|
||||||
|
# macro & "erase poly"
|
||||||
|
# macro p "paint pdiff"
|
||||||
|
macro n "paint ndiff"
|
||||||
|
# macro l "erase labels"
|
||||||
|
macro P "erase pdiff"
|
||||||
|
macro N "erase ndiff"
|
||||||
|
macro y "drc check; drc why"
|
||||||
|
macro ? "select area; what"
|
||||||
|
|
||||||
|
macro / "expand toggle"
|
||||||
|
macro ^w "writeall force"
|
||||||
|
macro ^e "edit"
|
||||||
|
# macro ^x "quit"
|
||||||
|
|
||||||
|
macro z "findbox zoom"
|
||||||
|
# "f" conflicts with Cadence "full view", so use control-i to select cells.
|
||||||
|
# macro f "select cell"
|
||||||
|
macro ^i "select cell"
|
||||||
|
|
||||||
|
# Leave keypad bindings as-is, further down. However, keypad
|
||||||
|
# keys generally don't translate through the VNC session, so
|
||||||
|
# use the following arrow key bindings:
|
||||||
|
#
|
||||||
|
# no shift shift
|
||||||
|
# arrows only -> Pan 10% 100%
|
||||||
|
# with alt -> Move 1 lambda 1 grid
|
||||||
|
# with ctrl -> Stretch 1 lambda 1 grid
|
||||||
|
#
|
||||||
|
# Pan 10 percent of the window size with arrows
|
||||||
|
# macro XK_Left "scroll l .1 w"
|
||||||
|
# macro XK_Up "scroll u .1 w"
|
||||||
|
# macro XK_Right "scroll r .1 w"
|
||||||
|
# macro XK_Down "scroll d .1 w"
|
||||||
|
|
||||||
|
# Pan 100 percent of the window size with arrows
|
||||||
|
# macro Shift_XK_Left "scroll l 1 w"
|
||||||
|
# macro Shift_XK_Up "scroll u 1 w"
|
||||||
|
# macro Shift_XK_Right "scroll r 1 w"
|
||||||
|
# macro Shift_XK_Down "scroll d 1 w"
|
||||||
|
|
||||||
|
# move 0.05um with arrows
|
||||||
|
# macro Alt_XK_Left "move l 1l"
|
||||||
|
# macro Alt_XK_Right "move r 1l"
|
||||||
|
# macro Alt_XK_Up "move u 1l"
|
||||||
|
# macro Alt_XK_Down "move d 1l"
|
||||||
|
|
||||||
|
# move 1 grid unit with arrows
|
||||||
|
# macro Alt_Shift_XK_Left "move l 1g"
|
||||||
|
# macro Alt_Shift_XK_Right "move r 1g"
|
||||||
|
# macro Alt_Shift_XK_Up "move u 1g"
|
||||||
|
# macro Alt_Shift_XK_Down "move d 1g"
|
||||||
|
|
||||||
|
# stretch 0.05um with arrows
|
||||||
|
# macro Control_XK_Left "stretch l 1l"
|
||||||
|
# macro Control_XK_Right "stretch r 1l"
|
||||||
|
# macro Control_XK_Up "stretch u 1l"
|
||||||
|
# macro Control_XK_Down "stretch d 1l"
|
||||||
|
|
||||||
|
# stretch 1 grid unit with arrows
|
||||||
|
# macro Control_Shift_XK_Left "stretch l 1g"
|
||||||
|
# macro Control_Shift_XK_Right "stretch r 1g"
|
||||||
|
# macro Control_Shift_XK_Up "stretch u 1g"
|
||||||
|
# macro Control_Shift_XK_Down "stretch d 1g"
|
||||||
|
|
||||||
|
# shift mouse wheel bindings for right-left shift
|
||||||
|
macro Shift_XK_Pointer_Button4 "scroll r .05 w"
|
||||||
|
macro Shift_XK_Pointer_Button5 "scroll l .05 w"
|
||||||
|
|
||||||
|
# control mouse wheel bindings for zoom in/out
|
||||||
|
macro Control_XK_Pointer_Button4 "zoom 0.70711"
|
||||||
|
macro Control_XK_Pointer_Button5 "zoom 1.41421"
|
||||||
|
|
||||||
|
# Bertrand's original arrow macros
|
||||||
|
# move 1 grid unit with arrows
|
||||||
|
macro XK_Left "move l 1g"
|
||||||
|
macro XK_Right "move r 1g"
|
||||||
|
macro XK_Up "move u 1g"
|
||||||
|
macro XK_Down "move d 1g"
|
||||||
|
|
||||||
|
# move 0.05um with arrows
|
||||||
|
macro Control_XK_Left "move l 1l"
|
||||||
|
macro Control_XK_Right "move r 1l"
|
||||||
|
macro Control_XK_Up "move u 1l"
|
||||||
|
macro Control_XK_Down "move d 1l"
|
||||||
|
|
||||||
|
# stretch 1 grid unit with arrows
|
||||||
|
macro Shift_XK_Left "stretch l 1g"
|
||||||
|
macro Shift_XK_Right "stretch r 1g"
|
||||||
|
macro Shift_XK_Up "stretch u 1g"
|
||||||
|
macro Shift_XK_Down "stretch d 1g"
|
||||||
|
|
||||||
|
# stretch 0.05um with arrows
|
||||||
|
macro Control_Shift_XK_Left "stretch l 1l"
|
||||||
|
macro Control_Shift_XK_Right "stretch r 1l"
|
||||||
|
macro Control_Shift_XK_Up "stretch u 1l"
|
||||||
|
macro Control_Shift_XK_Down "stretch d 1l"
|
||||||
|
|
||||||
|
# Restore pan function on Alt-key
|
||||||
|
# Pan 10 percent of the window size with arrows
|
||||||
|
macro Alt_XK_Left "scroll l .1 w"
|
||||||
|
macro Alt_XK_Up "scroll u .1 w"
|
||||||
|
macro Alt_XK_Right "scroll r .1 w"
|
||||||
|
macro Alt_XK_Down "scroll d .1 w"
|
||||||
|
|
||||||
|
# Pan 100 percent of the window size with arrows
|
||||||
|
macro Alt_Shift_XK_Left "scroll l 1 w"
|
||||||
|
macro Alt_Shift_XK_Up "scroll u 1 w"
|
||||||
|
macro Alt_Shift_XK_Right "scroll r 1 w"
|
||||||
|
macro Alt_Shift_XK_Down "scroll d 1 w"
|
||||||
|
|
@ -0,0 +1,45 @@
|
|||||||
|
v {xschem version=3.1.0 file_version=1.2
|
||||||
|
}
|
||||||
|
G {}
|
||||||
|
K {}
|
||||||
|
V {}
|
||||||
|
S {}
|
||||||
|
E {}
|
||||||
|
N 430 -160 430 -140 {
|
||||||
|
lab=RBL_R_b}
|
||||||
|
N 430 -110 480 -110 {
|
||||||
|
lab=RBL_R_b}
|
||||||
|
N 430 -190 480 -190 {
|
||||||
|
lab=GND}
|
||||||
|
N 430 -140 430 -110 {
|
||||||
|
lab=RBL_R_b}
|
||||||
|
N 430 -260 430 -220 {
|
||||||
|
lab=VDD}
|
||||||
|
N 400 -140 430 -140 {
|
||||||
|
lab=RBL_R_b}
|
||||||
|
N 240 -70 480 -70 {
|
||||||
|
lab=RBL_L_b}
|
||||||
|
C {devices/ipin.sym} 390 -190 0 0 {name=p1 lab=PRE_R_b}
|
||||||
|
C {devices/ipin.sym} 240 -70 0 0 {name=p4 lab=RBL_L_b
|
||||||
|
}
|
||||||
|
C {devices/ipin.sym} 400 -140 0 0 {name=p5 lab=RBL_R_b}
|
||||||
|
C {devices/opin.sym} 600 -90 0 0 {name=p6 lab=RBL_O}
|
||||||
|
C {sky130_fd_pr/pfet_01v8.sym} 410 -190 0 0 {name=M2
|
||||||
|
L=0.15
|
||||||
|
W=0.21
|
||||||
|
nf=1
|
||||||
|
mult=1
|
||||||
|
ad="'int((nf+1)/2) * W/nf * 0.29'"
|
||||||
|
pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
|
||||||
|
as="'int((nf+2)/2) * W/nf * 0.29'"
|
||||||
|
ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
|
||||||
|
nrd="'0.29 / W'" nrs="'0.29 / W'"
|
||||||
|
sa=0 sb=0 sd=0
|
||||||
|
model=pfet_01v8
|
||||||
|
spiceprefix=X
|
||||||
|
}
|
||||||
|
C {stdcells/NAND2.sym} 540 -90 0 0 {name=x1 VCCPIN=VCC VSSPIN=VSS VCCBPIN=VCC VSSBPIN=VSS}
|
||||||
|
C {devices/iopin.sym} 430 -260 0 0 {name=p2 lab=VDD
|
||||||
|
}
|
||||||
|
C {devices/iopin.sym} 480 -190 0 0 {name=p3 lab=GND
|
||||||
|
}
|
@ -0,0 +1,96 @@
|
|||||||
|
v {xschem version=3.1.0 file_version=1.2
|
||||||
|
}
|
||||||
|
G {}
|
||||||
|
K {}
|
||||||
|
V {}
|
||||||
|
S {}
|
||||||
|
E {}
|
||||||
|
B 4 200 -370 220 -280 {layer=7}
|
||||||
|
T {PRE_L} 180 -240 0 0 0.3 0.3 {}
|
||||||
|
T {PRE_R} 370 -240 0 0 0.3 0.3 {}
|
||||||
|
N 180 -190 200 -190 {
|
||||||
|
lab=PRE}
|
||||||
|
N 240 -160 240 -130 {
|
||||||
|
lab=RBL_L}
|
||||||
|
N 240 -260 240 -220 {
|
||||||
|
lab=VDD}
|
||||||
|
N 430 -240 430 -220 {
|
||||||
|
lab=VDD}
|
||||||
|
N 210 -140 360 -140 {
|
||||||
|
lab=PRE}
|
||||||
|
N 360 -140 390 -140 {
|
||||||
|
lab=PRE}
|
||||||
|
N 390 -190 390 -140 {
|
||||||
|
lab=PRE}
|
||||||
|
N 430 -160 430 -140 {
|
||||||
|
lab=RBL_R}
|
||||||
|
N 430 -110 480 -110 {
|
||||||
|
lab=RBL_R}
|
||||||
|
N 240 -130 240 -80 {
|
||||||
|
lab=RBL_L}
|
||||||
|
N 240 -70 260 -70 {
|
||||||
|
lab=RBL_L}
|
||||||
|
N 240 -80 240 -70 {
|
||||||
|
lab=RBL_L}
|
||||||
|
N 430 -190 480 -190 {
|
||||||
|
lab=GND}
|
||||||
|
N 240 -190 290 -190 {
|
||||||
|
lab=GND}
|
||||||
|
N 600 -90 610 -90 {
|
||||||
|
lab=RBL_Ob}
|
||||||
|
N 180 -160 240 -160 {
|
||||||
|
lab=RBL_L}
|
||||||
|
N 430 -160 520 -160 {
|
||||||
|
lab=RBL_R}
|
||||||
|
N 240 -270 240 -260 {
|
||||||
|
lab=VDD}
|
||||||
|
N 200 -190 200 -140 {
|
||||||
|
lab=PRE}
|
||||||
|
N 200 -140 210 -140 {
|
||||||
|
lab=PRE}
|
||||||
|
N 240 -240 430 -240 {
|
||||||
|
lab=VDD}
|
||||||
|
N 260 -70 480 -70 {
|
||||||
|
lab=RBL_L}
|
||||||
|
N 430 -140 430 -110 {
|
||||||
|
lab=RBL_R}
|
||||||
|
C {sky130_fd_pr/pfet_01v8.sym} 220 -190 0 0 {name=M1
|
||||||
|
L=0.15
|
||||||
|
W=0.21
|
||||||
|
nf=1
|
||||||
|
mult=1
|
||||||
|
ad="'int((nf+1)/2) * W/nf * 0.29'"
|
||||||
|
pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
|
||||||
|
as="'int((nf+2)/2) * W/nf * 0.29'"
|
||||||
|
ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
|
||||||
|
nrd="'0.29 / W'" nrs="'0.29 / W'"
|
||||||
|
sa=0 sb=0 sd=0
|
||||||
|
model=pfet_01v8
|
||||||
|
spiceprefix=X
|
||||||
|
}
|
||||||
|
C {devices/lab_pin.sym} 180 -190 0 0 {name=l5 sig_type=std_logic lab=PRE}
|
||||||
|
C {devices/lab_pin.sym} 240 -270 0 1 {name=l7 sig_type=std_logic lab=VDD}
|
||||||
|
C {devices/lab_pin.sym} 290 -190 0 1 {name=l11 sig_type=std_logic lab=GND}
|
||||||
|
C {devices/ipin.sym} 200 -360 0 0 {name=p1 lab=PRE}
|
||||||
|
C {devices/ipin.sym} 200 -330 0 0 {name=p4 lab=RBL_L}
|
||||||
|
C {devices/ipin.sym} 200 -310 0 0 {name=p5 lab=RBL_R}
|
||||||
|
C {devices/opin.sym} 220 -320 0 0 {name=p6 lab=RBL_Ob}
|
||||||
|
C {sky130_fd_pr/pfet_01v8.sym} 410 -190 0 0 {name=M2
|
||||||
|
L=0.15
|
||||||
|
W=0.21
|
||||||
|
nf=1
|
||||||
|
mult=1
|
||||||
|
ad="'int((nf+1)/2) * W/nf * 0.29'"
|
||||||
|
pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
|
||||||
|
as="'int((nf+2)/2) * W/nf * 0.29'"
|
||||||
|
ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
|
||||||
|
nrd="'0.29 / W'" nrs="'0.29 / W'"
|
||||||
|
sa=0 sb=0 sd=0
|
||||||
|
model=pfet_01v8
|
||||||
|
spiceprefix=X
|
||||||
|
}
|
||||||
|
C {stdcells/NAND2.sym} 540 -90 0 0 {name=x3 VCCPIN=VCC VSSPIN=VSS VCCBPIN=VCC VSSBPIN=VSS}
|
||||||
|
C {devices/lab_pin.sym} 610 -90 0 1 {name=l1 sig_type=std_logic lab=RBL_Ob}
|
||||||
|
C {devices/lab_pin.sym} 180 -160 0 0 {name=l2 sig_type=std_logic lab=RBL_L}
|
||||||
|
C {devices/lab_pin.sym} 520 -160 0 1 {name=l3 sig_type=std_logic lab=RBL_R}
|
||||||
|
C {devices/lab_pin.sym} 480 -190 0 1 {name=l4 sig_type=std_logic lab=GND}
|
@ -0,0 +1,10 @@
|
|||||||
|
module local_eval (
|
||||||
|
inout VDD,
|
||||||
|
inout GND,
|
||||||
|
//input PRE_L_b,
|
||||||
|
input RBL_L_b,
|
||||||
|
input PRE_R_b,
|
||||||
|
input RBL_R_b,
|
||||||
|
output RBL_O
|
||||||
|
);
|
||||||
|
endmodule
|
@ -0,0 +1,80 @@
|
|||||||
|
v {xschem version=3.1.0 file_version=1.2
|
||||||
|
}
|
||||||
|
G {}
|
||||||
|
K {}
|
||||||
|
V {}
|
||||||
|
S {}
|
||||||
|
E {}
|
||||||
|
T {_q_b} 480 -120 0 0 0.4 0.4 {}
|
||||||
|
N 460 -290 460 -230 {
|
||||||
|
lab=#net1}
|
||||||
|
N 460 -170 460 -130 {
|
||||||
|
lab=#net2}
|
||||||
|
N 460 -130 580 -130 {
|
||||||
|
lab=#net2}
|
||||||
|
N 500 -320 650 -320 {
|
||||||
|
lab=_q}
|
||||||
|
N 660 -320 660 -130 {
|
||||||
|
lab=_q}
|
||||||
|
N 650 -320 660 -320 {
|
||||||
|
lab=_q}
|
||||||
|
N 660 -130 710 -130 {
|
||||||
|
lab=_q}
|
||||||
|
C {sky130_fd_pr/pfet_01v8.sym} 80 -200 0 0 {name=PRECHARGE
|
||||||
|
L=0.15
|
||||||
|
W=1
|
||||||
|
nf=1
|
||||||
|
mult=1
|
||||||
|
ad="'int((nf+1)/2) * W/nf * 0.29'"
|
||||||
|
pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
|
||||||
|
as="'int((nf+2)/2) * W/nf * 0.29'"
|
||||||
|
ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
|
||||||
|
nrd="'0.29 / W'" nrs="'0.29 / W'"
|
||||||
|
sa=0 sb=0 sd=0
|
||||||
|
model=pfet_01v8
|
||||||
|
spiceprefix=X
|
||||||
|
}
|
||||||
|
C {sky130_fd_pr/pfet_01v8.sym} 270 -200 0 0 {name=PREDRIVER
|
||||||
|
L=0.15
|
||||||
|
W=1
|
||||||
|
nf=1
|
||||||
|
mult=1
|
||||||
|
ad="'int((nf+1)/2) * W/nf * 0.29'"
|
||||||
|
pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
|
||||||
|
as="'int((nf+2)/2) * W/nf * 0.29'"
|
||||||
|
ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
|
||||||
|
nrd="'0.29 / W'" nrs="'0.29 / W'"
|
||||||
|
sa=0 sb=0 sd=0
|
||||||
|
model=pfet_01v8
|
||||||
|
spiceprefix=X
|
||||||
|
}
|
||||||
|
C {sky130_fd_pr/pfet_01v8.sym} 440 -200 0 0 {name=CUT_FDBK
|
||||||
|
L=0.15
|
||||||
|
W=1
|
||||||
|
nf=1
|
||||||
|
mult=1
|
||||||
|
ad="'int((nf+1)/2) * W/nf * 0.29'"
|
||||||
|
pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
|
||||||
|
as="'int((nf+2)/2) * W/nf * 0.29'"
|
||||||
|
ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
|
||||||
|
nrd="'0.29 / W'" nrs="'0.29 / W'"
|
||||||
|
sa=0 sb=0 sd=0
|
||||||
|
model=pfet_01v8
|
||||||
|
spiceprefix=X
|
||||||
|
}
|
||||||
|
C {sky130_fd_pr/pfet_01v8.sym} 480 -320 0 1 {name=FDBK
|
||||||
|
L=0.15
|
||||||
|
W=1
|
||||||
|
nf=1
|
||||||
|
mult=1
|
||||||
|
ad="'int((nf+1)/2) * W/nf * 0.29'"
|
||||||
|
pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
|
||||||
|
as="'int((nf+2)/2) * W/nf * 0.29'"
|
||||||
|
ps="'2*int((nf+2)/2) * (W/nf + 0.29)'"
|
||||||
|
nrd="'0.29 / W'" nrs="'0.29 / W'"
|
||||||
|
sa=0 sb=0 sd=0
|
||||||
|
model=pfet_01v8
|
||||||
|
spiceprefix=X
|
||||||
|
}
|
||||||
|
C {sky130_stdcells/inv_1.sym} 620 -130 0 0 {name=x1 VGND=VGND VNB=VNB VPB=VPB VPWR=VPWR prefix=sky130_fd_sc_hd__ }
|
||||||
|
C {devices/opin.sym} 710 -130 0 0 {name=p1 lab=_q}
|
@ -0,0 +1,14 @@
|
|||||||
|
** sch_path: /home/wtf/projects/toy-sram/custom/xschem/local_eval.sch
|
||||||
|
**.subckt local_eval PRE_R_b RBL_L_b RBL_R_b RBL_O VDD GND
|
||||||
|
*.ipin PRE_R_b
|
||||||
|
*.ipin RBL_L_b
|
||||||
|
*.ipin RBL_R_b
|
||||||
|
*.opin RBL_O
|
||||||
|
*.iopin VDD
|
||||||
|
*.iopin GND
|
||||||
|
XM2 RBL_R_b PRE_R_b VDD GND sky130_fd_pr__pfet_01v8 L=0.15 W=0.21 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
|
||||||
|
+ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)'
|
||||||
|
+ nrd='0.29 / W' nrs='0.29 / W' sa=0 sb=0 sd=0 mult=1 m=1
|
||||||
|
x1 RBL_O RBL_R_b RBL_L_b VCC VSS VCC VSS NAND2
|
||||||
|
**.ends
|
||||||
|
.end
|
@ -0,0 +1,14 @@
|
|||||||
|
** sch_path: /home/wtf/projects/toy-sram/custom/xschem/local_eval.sch
|
||||||
|
**.subckt local_eval PRE_R_b RBL_L_b RBL_R_b RBL_O VDD GND
|
||||||
|
*.ipin PRE_R_b
|
||||||
|
*.ipin RBL_L_b
|
||||||
|
*.ipin RBL_R_b
|
||||||
|
*.opin RBL_O
|
||||||
|
*.iopin VDD
|
||||||
|
*.iopin GND
|
||||||
|
XM2 RBL_R_b PRE_R_b VDD GND sky130_fd_pr__pfet_01v8 L=0.15 W=0.21 nf=1 ad='int((nf+1)/2) * W/nf * 0.29'
|
||||||
|
+ as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)'
|
||||||
|
+ nrd='0.29 / W' nrs='0.29 / W' sa=0 sb=0 sd=0 mult=1 m=1
|
||||||
|
x1 RBL_O RBL_R_b RBL_L_b VCC VSS VCC VSS NAND2
|
||||||
|
**.ends
|
||||||
|
.end
|
@ -0,0 +1 @@
|
|||||||
|
/data/projects/open_pdks/sky130/sky130B/libs.tech/xschem/sky130_fd_pr
|
@ -0,0 +1 @@
|
|||||||
|
../defines.v
|
@ -0,0 +1 @@
|
|||||||
|
../toysram.vh
|
@ -0,0 +1,283 @@
|
|||||||
|
// SPDX-FileCopyrightText: 2020 Efabless Corporation
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
`default_nettype none
|
||||||
|
|
||||||
|
`include "toysram.vh"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* toysram_site
|
||||||
|
* user_project for custom toysram cell/array
|
||||||
|
|
||||||
|
|
||||||
|
*-------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* user_proj_example
|
||||||
|
*
|
||||||
|
* This is an example of a (trivially simple) user project,
|
||||||
|
* showing how the user project can connect to the logic
|
||||||
|
* analyzer, the wishbone bus, and the I/O pads.
|
||||||
|
*
|
||||||
|
* This project generates an integer count, which is output
|
||||||
|
* on the user area GPIO pads (digital output only). The
|
||||||
|
* wishbone connection allows the project to be controlled
|
||||||
|
* (start and stop) from the management SoC program.
|
||||||
|
*
|
||||||
|
* See the testbenches in directory "mprj_counter" for the
|
||||||
|
* example programs that drive this user project. The three
|
||||||
|
* testbenches are "io_ports", "la_test1", and "la_test2".
|
||||||
|
*
|
||||||
|
*-------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
module toysram_site #(
|
||||||
|
parameter BITS = 32
|
||||||
|
)(
|
||||||
|
`ifdef USE_POWER_PINS
|
||||||
|
inout vccd1, // User area 1 1.8V supply
|
||||||
|
inout vssd1, // User area 1 digital ground
|
||||||
|
`endif
|
||||||
|
|
||||||
|
// Wishbone Slave ports (WB MI A)
|
||||||
|
input wb_clk_i,
|
||||||
|
input wb_rst_i,
|
||||||
|
input wbs_stb_i,
|
||||||
|
input wbs_cyc_i,
|
||||||
|
input wbs_we_i,
|
||||||
|
input [3:0] wbs_sel_i,
|
||||||
|
input [31:0] wbs_dat_i,
|
||||||
|
input [31:0] wbs_adr_i,
|
||||||
|
output wbs_ack_o,
|
||||||
|
output [31:0] wbs_dat_o,
|
||||||
|
|
||||||
|
// Logic Analyzer Signals
|
||||||
|
`ifndef RA_SIM
|
||||||
|
input [127:0] la_data_in,
|
||||||
|
output [127:0] la_data_out,
|
||||||
|
input [127:0] la_oenb,
|
||||||
|
`endif
|
||||||
|
|
||||||
|
// IOs
|
||||||
|
input [`MPRJ_IO_PADS-1:0] io_in,
|
||||||
|
output [`MPRJ_IO_PADS-1:0] io_out,
|
||||||
|
output [`MPRJ_IO_PADS-1:0] io_oeb,
|
||||||
|
|
||||||
|
// IRQ
|
||||||
|
output [2:0] irq
|
||||||
|
);
|
||||||
|
|
||||||
|
wire clk;
|
||||||
|
wire rst;
|
||||||
|
|
||||||
|
wire [31:0] rdata;
|
||||||
|
wire [31:0] wdata;
|
||||||
|
wire [31:0] count;
|
||||||
|
|
||||||
|
wire valid;
|
||||||
|
wire [3:0] wstrb;
|
||||||
|
wire [31:0] la_write;
|
||||||
|
|
||||||
|
wire wb_cmd_val;
|
||||||
|
wire [31:0] wb_cmd_adr;
|
||||||
|
wire wb_cmd_we;
|
||||||
|
wire [3:0] wb_cmd_sel;
|
||||||
|
wire [31:0] wb_cmd_dat;
|
||||||
|
wire wb_rd_ack;
|
||||||
|
wire [31:0] wb_rd_dat;
|
||||||
|
wire [31:0] cmd_adr;
|
||||||
|
wire cmd_we;
|
||||||
|
wire [3:0] cmd_sel;
|
||||||
|
wire [31:0] cmd_dat;
|
||||||
|
wire ctl_cmd_val;
|
||||||
|
wire ra0_cmd_val;
|
||||||
|
wire ctl_rd_ack;
|
||||||
|
wire [31:0] ctl_rd_dat;
|
||||||
|
wire ra0_clk;
|
||||||
|
wire ra0_rst;
|
||||||
|
wire ra0_cfg_wr;
|
||||||
|
wire [31:0] ra0_cfg_rdat;
|
||||||
|
wire [31:0] ra0_cfg_wdat;
|
||||||
|
wire [31:0] ra0_bist_ctl;
|
||||||
|
wire [31:0] ra0_bist_status;
|
||||||
|
wire ra0_r0_enb;
|
||||||
|
wire [4:0] ra0_r0_adr;
|
||||||
|
wire [31:0] ra0_r0_dat;
|
||||||
|
wire ra0_r1_enb;
|
||||||
|
wire [4:0] ra0_r1_adr;
|
||||||
|
wire [31:0] ra0_r1_dat;
|
||||||
|
wire ra0_w0_enb;
|
||||||
|
wire [4:0] ra0_w0_adr;
|
||||||
|
wire [31:0] ra0_w0_dat;
|
||||||
|
|
||||||
|
// WB MI A
|
||||||
|
assign valid = wbs_cyc_i && wbs_stb_i;
|
||||||
|
assign wstrb = wbs_sel_i & {4{wbs_we_i}};
|
||||||
|
assign wbs_dat_o = rdata;
|
||||||
|
assign wdata = wbs_dat_i;
|
||||||
|
|
||||||
|
// IRQ
|
||||||
|
assign irq = 3'b000; // Unused
|
||||||
|
|
||||||
|
|
||||||
|
//wtf connect these to the array sigs?
|
||||||
|
// LA
|
||||||
|
//assign la_data_out = {{(127-BITS){1'b0}}, count};
|
||||||
|
assign la_data_out = 0;
|
||||||
|
// Assuming LA probes [63:32] are for controlling the count register
|
||||||
|
//assign la_write = ~la_oenb[63:32] & ~{BITS{valid}};
|
||||||
|
assign la_write = 0;
|
||||||
|
|
||||||
|
// Assuming LA probes [65:64] are for controlling the count clk & reset
|
||||||
|
//assign clk = (~la_oenb[64]) ? la_data_in[64]: wb_clk_i;
|
||||||
|
//assign rst = (~la_oenb[65]) ? la_data_in[65]: wb_rst_i;
|
||||||
|
assign clk = wb_clk_i;
|
||||||
|
assign rst = wb_rst_i;
|
||||||
|
|
||||||
|
// WB slave
|
||||||
|
// convert rd/wr commands to/from WB and route to:
|
||||||
|
// 1. config space
|
||||||
|
// 2. array space
|
||||||
|
wb_slave #(
|
||||||
|
) wb (
|
||||||
|
|
||||||
|
`ifdef USE_POWER_PINS
|
||||||
|
.vccd1(vccd1),
|
||||||
|
.vssd1(vssd1),
|
||||||
|
`endif
|
||||||
|
.clk(clk),
|
||||||
|
.rst(rst),
|
||||||
|
.wbs_stb_i(wbs_stb_i),
|
||||||
|
.wbs_cyc_i(wbs_cyc_i),
|
||||||
|
.wbs_we_i(wbs_we_i),
|
||||||
|
.wbs_sel_i(wbs_sel_i),
|
||||||
|
.wbs_dat_i(wbs_dat_i),
|
||||||
|
.wbs_adr_i(wbs_adr_i),
|
||||||
|
.wbs_ack_o(wbs_ack_o),
|
||||||
|
.wbs_dat_o(wbs_dat_o),
|
||||||
|
.cmd_val(wb_cmd_val),
|
||||||
|
.cmd_adr(wb_cmd_adr),
|
||||||
|
.cmd_we(wb_cmd_we),
|
||||||
|
.cmd_sel(wb_cmd_sel),
|
||||||
|
.cmd_dat(wb_cmd_dat),
|
||||||
|
.rd_ack(wb_rd_ack),
|
||||||
|
.rd_dat(wb_rd_dat)
|
||||||
|
);
|
||||||
|
|
||||||
|
cfg #(
|
||||||
|
) cfg (
|
||||||
|
|
||||||
|
`ifdef USE_POWER_PINS
|
||||||
|
.vccd1(vccd1),
|
||||||
|
.vssd1(vssd1),
|
||||||
|
`endif
|
||||||
|
.clk(clk),
|
||||||
|
.rst(rst),
|
||||||
|
.wb_cmd_val(wb_cmd_val),
|
||||||
|
.wb_cmd_adr(wb_cmd_adr),
|
||||||
|
.wb_cmd_we(wb_cmd_we),
|
||||||
|
.wb_cmd_sel(wb_cmd_sel),
|
||||||
|
.wb_cmd_dat(wb_cmd_dat),
|
||||||
|
.wb_rd_ack(wb_rd_ack),
|
||||||
|
.wb_rd_dat(wb_rd_dat),
|
||||||
|
.cmd_adr(cmd_adr),
|
||||||
|
.cmd_we(cmd_we),
|
||||||
|
.cmd_sel(cmd_sel),
|
||||||
|
.cmd_dat(cmd_dat),
|
||||||
|
.ctl_cmd_val(ctl_cmd_val),
|
||||||
|
.ra0_cmd_val(ra0_cmd_val),
|
||||||
|
.ctl_rd_ack(ctl_rd_ack),
|
||||||
|
.ctl_rd_dat(ctl_rd_dat)
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
// I/O interface
|
||||||
|
io_intf io (
|
||||||
|
|
||||||
|
`ifdef USE_POWER_PINS
|
||||||
|
.vccd1(vccd1),
|
||||||
|
.vssd1(vssd1),
|
||||||
|
`endif
|
||||||
|
.clk(clk),
|
||||||
|
.rst(rst)
|
||||||
|
|
||||||
|
);
|
||||||
|
*/
|
||||||
|
|
||||||
|
// array and i/o interfaces
|
||||||
|
control #(
|
||||||
|
) ctl (
|
||||||
|
`ifdef USE_POWER_PINS
|
||||||
|
.vccd1(vccd1),
|
||||||
|
.vssd1(vssd1),
|
||||||
|
`endif
|
||||||
|
.clk(clk),
|
||||||
|
.rst(rst),
|
||||||
|
.io_in(io_in),
|
||||||
|
.io_out(io_out),
|
||||||
|
.io_oeb(io_oeb),
|
||||||
|
.ctl_cmd_val(ctl_cmd_val),
|
||||||
|
.ra0_cmd_val(ra0_cmd_val),
|
||||||
|
.cmd_we(cmd_we),
|
||||||
|
.cmd_adr(cmd_adr),
|
||||||
|
.cmd_sel(cmd_sel),
|
||||||
|
.cmd_dat(cmd_dat),
|
||||||
|
.rd_ack(ctl_rd_ack),
|
||||||
|
.rd_dat(ctl_rd_dat),
|
||||||
|
.ra0_clk(ra0_clk),
|
||||||
|
.ra0_rst(ra0_rst),
|
||||||
|
.ra0_cfg_wr(ra0_cfg_wr),
|
||||||
|
.ra0_cfg_rdat(), //'hFFFFFFFF'), //wtf need to add to ra for read
|
||||||
|
.ra0_cfg_wdat(ra0_cfg_wdat),
|
||||||
|
.ra0_bist_ctl(ra0_bist_ctl),
|
||||||
|
.ra0_bist_status(ra0_bist_status),
|
||||||
|
.ra0_r0_enb(ra0_r0_enb),
|
||||||
|
.ra0_r0_adr(ra0_r0_adr),
|
||||||
|
.ra0_r0_dat(ra0_r0_dat),
|
||||||
|
.ra0_r1_enb(ra0_r1_enb),
|
||||||
|
.ra0_r1_adr(ra0_r1_adr),
|
||||||
|
.ra0_r1_dat(ra0_r1_dat),
|
||||||
|
.ra0_w0_enb(ra0_w0_enb),
|
||||||
|
.ra0_w0_adr(ra0_w0_adr),
|
||||||
|
.ra0_w0_dat(ra0_w0_dat)
|
||||||
|
);
|
||||||
|
|
||||||
|
// arrays
|
||||||
|
test_ra_sdr_32x32 #(
|
||||||
|
.RA_SELECT(`RA_SELECT)
|
||||||
|
) ra_0 (
|
||||||
|
`ifdef USE_POWER_PINS
|
||||||
|
.vccd1(vccd1),
|
||||||
|
.vssd1(vssd1),
|
||||||
|
`endif
|
||||||
|
.clk(ra0_clk),
|
||||||
|
.reset(ra0_rst),
|
||||||
|
.cfg_wr(ra0_cfg_wr),
|
||||||
|
.cfg_dat(ra0_cfg_wdat),
|
||||||
|
.bist_ctl(ra0_bist_ctl),
|
||||||
|
.bist_status(ra0_bist_status),
|
||||||
|
.rd_enb_0(ra0_r0_enb),
|
||||||
|
.rd_adr_0(ra0_r0_adr),
|
||||||
|
.rd_dat_0(ra0_r0_dat),
|
||||||
|
.rd_enb_1(ra0_r1_enb),
|
||||||
|
.rd_adr_1(ra0_r1_adr),
|
||||||
|
.rd_dat_1(ra0_r1_dat),
|
||||||
|
.wr_enb_0(ra0_w0_enb),
|
||||||
|
.wr_adr_0(ra0_w0_adr),
|
||||||
|
.wr_dat_0(ra0_w0_dat)
|
||||||
|
);
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
||||||
|
`default_nettype wire
|
@ -0,0 +1 @@
|
|||||||
|
../toysram.vh
|
Loading…
Reference in New Issue