mirror of https://github.com/VLSIDA/OpenRAM.git
passing gf180 parameterized gate tests
This commit is contained in:
parent
d18a4f8c7c
commit
a904874978
|
|
@ -130,14 +130,14 @@ RUN apt-get install --no-install-recommends -y iverilog
|
||||||
### Magic ###
|
### Magic ###
|
||||||
#ARG MAGIC_COMMIT=db4fa65bfc096e63954b37b188ea27b90ab31839
|
#ARG MAGIC_COMMIT=db4fa65bfc096e63954b37b188ea27b90ab31839
|
||||||
#ARG MAGIC_COMMIT=8.3.274
|
#ARG MAGIC_COMMIT=8.3.274
|
||||||
ARG MAGIC_COMMIT=8.3.311
|
ARG MAGIC_COMMIT=8.3.363
|
||||||
WORKDIR /root
|
WORKDIR /root
|
||||||
#RUN git clone https://github.com/RTimothyEdwards/magic.git magic
|
#RUN git clone https://github.com/RTimothyEdwards/magic.git magic
|
||||||
RUN git clone git://opencircuitdesign.com/magic magic
|
RUN git clone git://opencircuitdesign.com/magic magic
|
||||||
WORKDIR /root/magic
|
WORKDIR /root/magic
|
||||||
RUN git checkout ${MAGIC_COMMIT}
|
RUN git checkout ${MAGIC_COMMIT}
|
||||||
COPY mrg.patch /root/magic
|
#COPY mrg.patch /root/magic
|
||||||
RUN git apply mrg.patch
|
#RUN git apply mrg.patch
|
||||||
RUN ./configure
|
RUN ./configure
|
||||||
RUN make
|
RUN make
|
||||||
RUN make install
|
RUN make install
|
||||||
|
|
|
||||||
|
|
@ -31,9 +31,10 @@ tech_modules = d.module_type()
|
||||||
# Custom cell properties
|
# Custom cell properties
|
||||||
###################################################
|
###################################################
|
||||||
cell_properties = d.cell_properties()
|
cell_properties = d.cell_properties()
|
||||||
|
cell_properties.ptx.model_is_subckt = True
|
||||||
|
|
||||||
###################################################
|
###################################################
|
||||||
# Custom cell properties
|
# Custom layer properties
|
||||||
###################################################
|
###################################################
|
||||||
layer_properties = d.layer_properties()
|
layer_properties = d.layer_properties()
|
||||||
|
|
||||||
|
|
@ -186,11 +187,11 @@ drc.add_layer("poly",
|
||||||
drc["poly_extend_active"] = 0.22
|
drc["poly_extend_active"] = 0.22
|
||||||
|
|
||||||
drc["poly_to_contact"] = 0
|
drc["poly_to_contact"] = 0
|
||||||
# poly.7 Minimum enclosure of active around gate
|
|
||||||
#drc["active_enclose_gate"] = 0.075
|
#drc["active_enclose_gate"] = 0.075
|
||||||
|
|
||||||
drc["poly_to_active"] = 0.1
|
drc["poly_to_active"] = 0.1
|
||||||
# poly.2 Minimum spacing of field poly
|
|
||||||
#drc["poly_to_field_poly"] = 0.210
|
#drc["poly_to_field_poly"] = 0.210
|
||||||
|
|
||||||
drc.add_layer("active",
|
drc.add_layer("active",
|
||||||
|
|
@ -211,148 +212,112 @@ drc.add_enclosure("pwell",
|
||||||
layer="active",
|
layer="active",
|
||||||
enclosure=0.43,
|
enclosure=0.43,
|
||||||
extension=0.6)
|
extension=0.6)
|
||||||
# nsd/psd.5a
|
|
||||||
#drc.add_enclosure("implant",
|
drc.add_enclosure("implant",
|
||||||
# layer="active",
|
layer="active",
|
||||||
# enclosure=0.125)
|
enclosure=0.125)
|
||||||
|
|
||||||
# Same as active enclosure?
|
# Same as active enclosure?
|
||||||
#drc["implant_to_contact"] = 0.070
|
#drc["implant_to_contact"] = 0.070
|
||||||
# nsd/psd.1 nsd/psd.2
|
|
||||||
#drc.add_layer("implant",
|
drc.add_layer("implant",
|
||||||
# width=0.380,
|
width=0.4,
|
||||||
# spacing=0.380,
|
spacing=0.4,
|
||||||
# area=0.265)
|
area=0.35)
|
||||||
|
|
||||||
drc.add_layer("contact",
|
drc.add_layer("contact",
|
||||||
width=0.22,
|
width=0.22,
|
||||||
spacing=0.25)
|
spacing=0.25)
|
||||||
# licon.5c (0.06 extension), (licon.7 for extension)
|
|
||||||
#drc.add_enclosure("active",
|
|
||||||
# layer="contact",
|
|
||||||
# enclosure=0.040,
|
|
||||||
# extension=0.060)
|
|
||||||
# licon.7
|
|
||||||
#drc["tap_extend_contact"] = 0.120
|
|
||||||
|
|
||||||
# licon.8 Minimum enclosure of poly around contact
|
drc.add_enclosure("active",
|
||||||
#drc.add_enclosure("poly",
|
layer="contact",
|
||||||
# layer="contact",
|
enclosure=0.01,
|
||||||
# enclosure=0.08,
|
extension=0.01)
|
||||||
# extension=0.08)
|
drc.add_enclosure("poly",
|
||||||
# licon.11a
|
layer="contact",
|
||||||
#drc["active_contact_to_gate"] = 0.050
|
enclosure=0.07,
|
||||||
# npc.4 > licon.14 0.19 > licon.11a
|
extension=0.07)
|
||||||
#drc["poly_contact_to_gate"] = 0.270
|
|
||||||
# licon.15
|
drc["active_contact_to_gate"] = 0.145
|
||||||
|
|
||||||
|
drc["poly_contact_to_gate"] = 0.165
|
||||||
|
|
||||||
#drc["npc_enclose_poly"] = 0.1
|
#drc["npc_enclose_poly"] = 0.1
|
||||||
|
|
||||||
# li.1, li.3
|
|
||||||
#drc.add_layer("li",
|
|
||||||
# width=0.170,
|
|
||||||
# spacing=0.170)
|
|
||||||
|
|
||||||
# licon.5
|
|
||||||
#drc.add_enclosure("li",
|
|
||||||
# layer="contact",
|
|
||||||
# enclosure=0,
|
|
||||||
# extension=0.080)
|
|
||||||
|
|
||||||
#drc.add_enclosure("li",
|
|
||||||
# layer="mcon",
|
|
||||||
# enclosure=0,
|
|
||||||
# extension=0.080)
|
|
||||||
# mcon.1, mcon.2
|
|
||||||
#drc.add_layer("mcon",
|
|
||||||
# width=0.170,
|
|
||||||
# spacing=0.210)
|
|
||||||
|
|
||||||
drc.add_layer("m1",
|
drc.add_layer("m1",
|
||||||
width=0.23,
|
width=0.23,
|
||||||
spacing=0.23,
|
spacing=0.23,
|
||||||
area=0.1444)
|
area=0.1444)
|
||||||
# m1.4 Minimum enclosure of metal1
|
|
||||||
# m1.5 Minimum enclosure around contact on two opposite sides
|
|
||||||
#drc.add_enclosure("m1",
|
|
||||||
# layer="mcon",
|
|
||||||
# enclosure=0.030,
|
|
||||||
# extension=0.060)
|
|
||||||
# via.4a Minimum enclosure around via1
|
|
||||||
# via.5a Minimum enclosure around via1 on two opposite sides
|
|
||||||
#drc.add_enclosure("m1",
|
|
||||||
# layer="via1",
|
|
||||||
# enclosure=0.055,
|
|
||||||
# extension=0.085)
|
|
||||||
|
|
||||||
# via.1a Minimum width of via1
|
drc.add_enclosure("m1",
|
||||||
# via.2 Minimum spacing of via1
|
layer="contact",
|
||||||
#drc.add_layer("via1",
|
enclosure=0.06,
|
||||||
# width=0.150,
|
extension=0.06)
|
||||||
# spacing=0.170)
|
|
||||||
|
drc.add_enclosure("m1",
|
||||||
|
layer="via1",
|
||||||
|
enclosure=0.06,
|
||||||
|
extension=0.06)
|
||||||
|
|
||||||
|
drc.add_layer("via1",
|
||||||
|
width=0.26,
|
||||||
|
spacing=0.26)
|
||||||
|
|
||||||
drc.add_layer("m2",
|
drc.add_layer("m2",
|
||||||
width=0.28,
|
width=0.28,
|
||||||
spacing=0.28,
|
spacing=0.28,
|
||||||
area=0.1444)
|
area=0.1444)
|
||||||
# m2.4 Minimum enclosure around via1
|
|
||||||
# m2.5 Minimum enclosure around via1 on two opposite sides
|
|
||||||
#drc.add_enclosure("m2",
|
|
||||||
# layer="via1",
|
|
||||||
# enclosure=0.055,
|
|
||||||
# extension=0.085)
|
|
||||||
# via2.4 Minimum enclosure around via2
|
|
||||||
# via2.5 Minimum enclosure around via2 on two opposite sides
|
|
||||||
#drc.add_enclosure("m2",
|
|
||||||
# layer="via2",
|
|
||||||
# enclosure=0.040,
|
|
||||||
# extension=0.085)
|
|
||||||
|
|
||||||
# via2.1a Minimum width of Via2
|
drc.add_enclosure("m2",
|
||||||
# via2.2 Minimum spacing of Via2
|
layer="via1",
|
||||||
#drc.add_layer("via2",
|
enclosure=0.06,
|
||||||
# width=0.200,
|
extension=0.06)
|
||||||
# spacing=0.200)
|
|
||||||
|
drc.add_enclosure("m2",
|
||||||
|
layer="via2",
|
||||||
|
enclosure=0.06,
|
||||||
|
extension=0.06)
|
||||||
|
|
||||||
|
drc.add_layer("via2",
|
||||||
|
width=0.26,
|
||||||
|
spacing=0.26)
|
||||||
|
|
||||||
drc.add_layer("m3",
|
drc.add_layer("m3",
|
||||||
width=0.28,
|
width=0.28,
|
||||||
spacing=0.28,
|
spacing=0.28,
|
||||||
area=0.1444)
|
area=0.1444)
|
||||||
# m3.4 Minimum enclosure around via2
|
|
||||||
#drc.add_enclosure("m3",
|
|
||||||
# layer="via2",
|
|
||||||
# enclosure=0.065)
|
|
||||||
# via3.4 Minimum enclosure around via3
|
|
||||||
# via3.5 Minimum enclosure around via3 on two opposite sides
|
|
||||||
#drc.add_enclosure("m3",
|
|
||||||
# layer="via3",
|
|
||||||
# enclosure=0.060,
|
|
||||||
# extension=0.090)
|
|
||||||
|
|
||||||
# via3.1 Minimum width of Via3
|
drc.add_enclosure("m3",
|
||||||
# via3.2 Minimum spacing of Via3
|
layer="via2",
|
||||||
#drc.add_layer("via3",
|
enclosure=0.06)
|
||||||
# width=0.200,
|
|
||||||
# spacing=0.200)
|
|
||||||
|
drc.add_enclosure("m3",
|
||||||
|
layer="via3",
|
||||||
|
enclosure=0.06,
|
||||||
|
extension=0.06)
|
||||||
|
|
||||||
|
drc.add_layer("via3",
|
||||||
|
width=0.26,
|
||||||
|
spacing=0.26)
|
||||||
|
|
||||||
drc.add_layer("m4",
|
drc.add_layer("m4",
|
||||||
width=0.28,
|
width=0.28,
|
||||||
spacing=0.28,
|
spacing=0.28,
|
||||||
area=0.1444)
|
area=0.1444)
|
||||||
# m4.3 Minimum enclosure around via3
|
|
||||||
#drc.add_enclosure("m4",
|
|
||||||
# layer="via3",
|
|
||||||
# enclosure=0.065)
|
|
||||||
|
|
||||||
#drc.add_enclosure("m4",
|
drc.add_enclosure("m4",
|
||||||
# layer="via4",
|
layer="via3",
|
||||||
# enclosure=0.060)
|
enclosure=0.06)
|
||||||
|
|
||||||
|
drc.add_enclosure("m4",
|
||||||
|
layer="via4",
|
||||||
|
enclosure=0.06)
|
||||||
|
|
||||||
|
|
||||||
# via4.1 Minimum width of Via4
|
drc.add_layer("via5",
|
||||||
# via4.2 Minimum spacing of Via4
|
width=0.26,
|
||||||
#drc.add_layer("via4",
|
spacing=0.26)
|
||||||
# width=0.800,
|
|
||||||
# spacing=0.800)
|
|
||||||
|
|
||||||
# m5.1 Minimum width of metal5
|
# m5.1 Minimum width of metal5
|
||||||
# m5.2 Minimum spacing of metal5
|
# m5.2 Minimum spacing of metal5
|
||||||
|
|
@ -376,14 +341,11 @@ drc.add_layer("m4",
|
||||||
|
|
||||||
# spice info
|
# spice info
|
||||||
spice = {}
|
spice = {}
|
||||||
spice["nmos"] = "sky130_fd_pr__nfet_01v8"
|
spice["nmos"] = "nfet_03v3"
|
||||||
spice["pmos"] = "sky130_fd_pr__pfet_01v8"
|
spice["pmos"] = "pfet_03v3"
|
||||||
spice["power"]="vccd1"
|
spice["power"]="vccd1"
|
||||||
spice["ground"]="vssd1"
|
spice["ground"]="vssd1"
|
||||||
|
|
||||||
# whether or not the device model is actually a subckt
|
|
||||||
spice["device_prefix"] = "X"
|
|
||||||
|
|
||||||
spice["fet_libraries"] = {"TT": [[os.environ.get("SPICE_MODEL_DIR") + "/sky130.lib.spice", "tt"]]}
|
spice["fet_libraries"] = {"TT": [[os.environ.get("SPICE_MODEL_DIR") + "/sky130.lib.spice", "tt"]]}
|
||||||
|
|
||||||
# spice stimulus related variables
|
# spice stimulus related variables
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue