Preliminary support in Magic for ReRAM. Putting this support in sky130A is a temporary solution, as the ReRAM metal stackup is different (mainly with respect to parasitics) and requires that there be a new variant sky130B supporting ReRAM and the altered stackup. The temporary solution will allow people to design ReRAM based projects while we revise parasitics for the stackup.
diff --git a/sky130/Makefile.in b/sky130/Makefile.in index ab3d646..caa9c05 100644 --- a/sky130/Makefile.in +++ b/sky130/Makefile.in
@@ -232,6 +232,9 @@ SKY130A_DEFS += -DMETAL5 -DMIM -DREDISTRIBUTION # SKY130A_DEFS += -DMETAL5 -DMIM +# NOTE: Test only: This will be moved to SKY130B_DEFS in the future! +SKY130A_DEFS += -DRERAM + # Add staging path SKY130A_DEFS += -DSTAGING_PATH=${STAGING_PATH}
diff --git a/sky130/magic/sky130.tech b/sky130/magic/sky130.tech index 2250bf9..8582abd 100644 --- a/sky130/magic/sky130.tech +++ b/sky130/magic/sky130.tech
@@ -252,6 +252,10 @@ metal1 padl -metal1 m1fill +#ifdef RERAM + metal2 reram,rr +#endif + # Metal 2 metal2 metal2,m2,met2 metal2 rmetal2,rm2,rmet2 @@ -448,7 +452,11 @@ allli *locali,coreli,rli allm1 *m1,rm1 +#ifdef RERAM + allm2 *m2,rm2,reram +#else (!RERAM) allm2 *m2,rm2 +#endif (!RERAM) allm3 *m3,rm3 #ifdef METAL5 allm4 *m4,rm4 @@ -575,6 +583,11 @@ rm1 metal2 poly_resist_stripes obsm1 metal2 m2c metal2 metal3 via2arrow + +#ifdef RERAM + reram metal2 metal3 via2 contact_X'es +#endif (RERAM) + metal2 metal3 m2fill metal3 rm2 metal3 poly_resist_stripes @@ -700,7 +713,11 @@ pwell,*psd,*mvpsd,npn pwell,*psd,*mvpsd,npn *li,coreli,lifill *li,coreli,lifill *m1,m1fill,obsmcon *m1,m1fill,obsmcon +#ifdef RERAM + *m2,m2fill,reram *m2,m2fill,reram +#else (!RERAM) *m2,m2fill *m2,m2fill +#endif (!RERAM) *m3,m3fill *m3,m3fill #ifdef METAL5 *m4,m4fill *m4,m4fill @@ -1247,6 +1264,14 @@ squares-grid 40 200 200 calma 69 44 +#ifdef RERAM +#undef RERAM + layer RERAM reram + squares-grid 55 230 230 + calma 201 20 +#define RERAM +#endif (RERAM) + #---------------------------------------------------------------- # MET3 #---------------------------------------------------------------- @@ -3511,8 +3536,17 @@ #endif (MIM) +#ifdef RERAM + layer reram RERAM + and VIA1 + grow 55 +#endif (RERAM) + templayer m2cbase VIA1 and-not COREID +#ifdef RERAM + and-not RERAM +#endif (RERAM) grow 5 or VIA1 grow 50 @@ -3957,6 +3991,9 @@ calma MET1 68 20 calma VIA1 68 44 +#ifdef RERAM + calma RERAM 201 20 +#endif (RERAM) calma MET2 69 20 calma VIA2 69 44 calma MET3 70 20 @@ -4526,6 +4563,22 @@ exact_overlap v1/m1 +#ifdef RERAM +#-------------------------------------------------- +# ReRAM +#-------------------------------------------------- + + width reram 340 "ReRAM width < %d (rr1.1)" + spacing reram reram 55 touching_illegal "ReRAM spacing < %d (rr1.2)" + surround reram *m1,rm1 30 directional \ + "Metal1 overlap of ReRAM < %d in one direction (via.5a - via.4a)" + surround reram *m2,rm2 30 directional \ + "Metal2 overlap of ReRAM < %d in one direction (met2.5 - met2.4)" + + no_overlap reram,v1 reram,v1 + +#endif (RERAM) + #-------------------------------------------------- # METAL2 - #-------------------------------------------------- @@ -4991,6 +5044,9 @@ height mcon 1.0361 0.34 height allm1 1.3761 0.36 height m1fill 1.3761 0.36 +#ifdef RERAM + # TO-DO: Rework all heights based on ReRAM! +#endif (RERAM) height v1 1.7361 0.27 height allm2 2.0061 0.36 height m2fill 1.3761 0.36 @@ -5176,6 +5232,10 @@ defaultsideoverlap allm1 metal1 allli locali 59 defaultsideoverlap allli locali allm1 metal1 35 +#ifdef RERAM +# TO-DO: Modify all metal stack parasitics above metal1 based on ReRAM! +#endif (RERAM) + #metal2 defaultsidewall allm2 metal2 50 defaultareacap allm2 metal2 nwell,obswell,pwell well 17 @@ -5465,6 +5525,10 @@ device ndiode sky130_fd_pr__diode_pw2nd_05v5_nvt *nndiode pwell,space/w a=area p=pj device ndiode sky130_fd_pr__diode_pw2nd_11v0 *mvndiode pwell,space/w a=area p=pj +#ifdef RERAM + device csubcircuit sky130_fd_pr__reram reram m1 a=area_ox +#endif (RERAM) + #ifdef MIM device csubcircuit sky130_fd_pr__cap_mim_m3_1 *mimcap *m3 w=w l=l device csubcircuit sky130_fd_pr__cap_mim_m3_2 *mimcap2 *m4 w=w l=l