diff --git a/act/tech.h b/act/tech.h index eafd2796..2c62fbdd 100644 --- a/act/tech.h +++ b/act/tech.h @@ -201,6 +201,20 @@ class PolyMat : public RoutingMat { int getNotchOverhang (int w) { return (*notch_overhang)[w]; } Contact *getUpC() { return viaup; } + int getViaNSpacing (int type) { + if (!via_n) { + return 1; + } + return via_n[type]; + } + + int getViaPSpacing (int type) { + if (!via_p) { + return 1; + } + return via_p[type]; + } + protected: RangeTable *overhang; /* poly overhang beyond diffusion */ diff --git a/tech/techgen.cc b/tech/techgen.cc index cc5368a0..2da7600f 100644 --- a/tech/techgen.cc +++ b/tech/techgen.cc @@ -643,6 +643,15 @@ void emit_drc (pp_t *pp) } emit_width_spacing (pp, Technology::T->diff[j][i], buf); + /* emit poly contact to diff spacing */ + emit_spacing (pp, Technology::T->poly->getUpC()->getName(), + buf, + (j == 0 ? + Technology::T->poly->getViaNSpacing (i) : + Technology::T->poly->getViaPSpacing (i))); + + + if (diff && diffc) { snprintf (buf2, 1024, "%s,%s", diff->getName(), diffc->getName()); @@ -738,6 +747,9 @@ void emit_drc (pp_t *pp) emit_overhang (pp, Technology::T->poly, "allpolynonfet", "allfet", Technology::T->poly->getOverhang (0)); + + + int pspacing = 0; for (int i=0; i < Technology::T->num_devs; i++) { for (int j=0; j < 2; j++) {