diff --git a/alliance/src/nero/src/MMBK.cpp b/alliance/src/nero/src/MMBK.cpp index e7369d3e..defb6f8c 100644 --- a/alliance/src/nero/src/MMBK.cpp +++ b/alliance/src/nero/src/MMBK.cpp @@ -1,7 +1,7 @@ // -*- C++ -*- // -// $Id: MMBK.cpp,v 1.9 2008/06/11 09:20:34 jpc Exp $ +// $Id: MMBK.cpp,v 1.10 2012/05/02 14:49:23 jpc Exp $ // // /-----------------------------------------------------------------\ // | | @@ -197,25 +197,27 @@ CEnv::CEnv (void) // Copy constants values from constants namespace ("D::"). // Routing constants, loaded now that we have SCALE_X. - D::X_GRID = ::MBK::SCALE (D::_X_GRID); - D::Y_GRID = ::MBK::SCALE (D::_Y_GRID); - D::WIDTH_VSS = ::MBK::SCALE (D::_WIDTH_VSS); - D::WIDTH_VDD = ::MBK::SCALE (D::_WIDTH_VDD); - D::Y_SLICE = ::MBK::SCALE (D::_Y_SLICE); - D::TRACK_WIDTH_ALU1 = ::MBK::SCALE (D::_TRACK_WIDTH_ALU1); - D::TRACK_WIDTH_ALU2 = ::MBK::SCALE (D::_TRACK_WIDTH_ALU2); - D::TRACK_WIDTH_ALU3 = ::MBK::SCALE (D::_TRACK_WIDTH_ALU3); - D::TRACK_WIDTH_ALU4 = ::MBK::SCALE (D::_TRACK_WIDTH_ALU4); - D::TRACK_WIDTH_ALU5 = ::MBK::SCALE (D::_TRACK_WIDTH_ALU5); - D::TRACK_WIDTH_ALU6 = ::MBK::SCALE (D::_TRACK_WIDTH_ALU6); - D::TRACK_WIDTH_ALU7 = ::MBK::SCALE (D::_TRACK_WIDTH_ALU7); - D::TRACK_SPACING_ALU1 = ::MBK::SCALE (D::_TRACK_SPACING_ALU1); - D::TRACK_SPACING_ALU2 = ::MBK::SCALE (D::_TRACK_SPACING_ALU2); - D::TRACK_SPACING_ALU3 = ::MBK::SCALE (D::_TRACK_SPACING_ALU3); - D::TRACK_SPACING_ALU4 = ::MBK::SCALE (D::_TRACK_SPACING_ALU4); - D::TRACK_SPACING_ALU5 = ::MBK::SCALE (D::_TRACK_SPACING_ALU5); - D::TRACK_SPACING_ALU6 = ::MBK::SCALE (D::_TRACK_SPACING_ALU6); - D::TRACK_SPACING_ALU7 = ::MBK::SCALE (D::_TRACK_SPACING_ALU7); + D::X_GRID = ::MBK::SCALE (MBK_X_GRID); + D::Y_GRID = ::MBK::SCALE (MBK_Y_GRID); + D::WIDTH_VSS = ::MBK::SCALE (MBK_WIDTH_VSS); + D::WIDTH_VDD = ::MBK::SCALE (MBK_WIDTH_VDD); + D::Y_SLICE = ::MBK::SCALE (MBK_Y_SLICE); + D::TRACK_WIDTH_ALU1 = ::MBK::SCALE (MBK_TRACK_WIDTH_ALU1); + D::TRACK_WIDTH_ALU2 = ::MBK::SCALE (MBK_TRACK_WIDTH_ALU2); + D::TRACK_WIDTH_ALU3 = ::MBK::SCALE (MBK_TRACK_WIDTH_ALU3); + D::TRACK_WIDTH_ALU4 = ::MBK::SCALE (MBK_TRACK_WIDTH_ALU4); + D::TRACK_WIDTH_ALU5 = ::MBK::SCALE (MBK_TRACK_WIDTH_ALU5); + D::TRACK_WIDTH_ALU6 = ::MBK::SCALE (MBK_TRACK_WIDTH_ALU6); + D::TRACK_WIDTH_ALU7 = ::MBK::SCALE (MBK_TRACK_WIDTH_ALU7); + D::TRACK_WIDTH_ALU8 = ::MBK::SCALE (MBK_TRACK_WIDTH_ALU8); + D::TRACK_SPACING_ALU1 = ::MBK::SCALE (MBK_TRACK_SPACING_ALU1); + D::TRACK_SPACING_ALU2 = ::MBK::SCALE (MBK_TRACK_SPACING_ALU2); + D::TRACK_SPACING_ALU3 = ::MBK::SCALE (MBK_TRACK_SPACING_ALU3); + D::TRACK_SPACING_ALU4 = ::MBK::SCALE (MBK_TRACK_SPACING_ALU4); + D::TRACK_SPACING_ALU5 = ::MBK::SCALE (MBK_TRACK_SPACING_ALU5); + D::TRACK_SPACING_ALU6 = ::MBK::SCALE (MBK_TRACK_SPACING_ALU6); + D::TRACK_SPACING_ALU7 = ::MBK::SCALE (MBK_TRACK_SPACING_ALU7); + D::TRACK_SPACING_ALU8 = ::MBK::SCALE (MBK_TRACK_SPACING_ALU8); // Grid spacing. grid_dx = D::X_GRID; @@ -229,6 +231,7 @@ CEnv::CEnv (void) ALU2W[ALU5] = D::TRACK_WIDTH_ALU5; ALU2W[ALU6] = D::TRACK_WIDTH_ALU6; ALU2W[ALU7] = D::TRACK_WIDTH_ALU7; + ALU2W[ALU8] = D::TRACK_WIDTH_ALU8; ALU2W[CALU1] = D::TRACK_WIDTH_ALU1; ALU2W[CALU2] = D::TRACK_WIDTH_ALU2; ALU2W[CALU3] = D::TRACK_WIDTH_ALU3; @@ -236,6 +239,7 @@ CEnv::CEnv (void) ALU2W[CALU5] = D::TRACK_WIDTH_ALU5; ALU2W[CALU6] = D::TRACK_WIDTH_ALU6; ALU2W[CALU7] = D::TRACK_WIDTH_ALU7; + ALU2W[CALU8] = D::TRACK_WIDTH_ALU8; ALU2W[TALU1] = D::TRACK_WIDTH_ALU1; ALU2W[TALU2] = D::TRACK_WIDTH_ALU2; ALU2W[TALU3] = D::TRACK_WIDTH_ALU3; @@ -243,6 +247,7 @@ CEnv::CEnv (void) ALU2W[TALU5] = D::TRACK_WIDTH_ALU5; ALU2W[TALU6] = D::TRACK_WIDTH_ALU6; ALU2W[TALU7] = D::TRACK_WIDTH_ALU7; + ALU2W[TALU8] = D::TRACK_WIDTH_ALU8; // Layers minimal width. ALU2S[ALU1] = D::TRACK_SPACING_ALU1; @@ -252,6 +257,7 @@ CEnv::CEnv (void) ALU2S[ALU5] = D::TRACK_SPACING_ALU5; ALU2S[ALU6] = D::TRACK_SPACING_ALU6; ALU2S[ALU7] = D::TRACK_SPACING_ALU7; + ALU2S[ALU8] = D::TRACK_SPACING_ALU8; ALU2S[CALU1] = D::TRACK_SPACING_ALU1; ALU2S[CALU2] = D::TRACK_SPACING_ALU2; ALU2S[CALU3] = D::TRACK_SPACING_ALU3; @@ -259,6 +265,7 @@ CEnv::CEnv (void) ALU2S[CALU5] = D::TRACK_SPACING_ALU5; ALU2S[CALU6] = D::TRACK_SPACING_ALU6; ALU2S[CALU7] = D::TRACK_SPACING_ALU7; + ALU2S[CALU8] = D::TRACK_SPACING_ALU8; ALU2S[TALU1] = D::TRACK_SPACING_ALU1; ALU2S[TALU2] = D::TRACK_SPACING_ALU2; ALU2S[TALU3] = D::TRACK_SPACING_ALU3; @@ -266,6 +273,7 @@ CEnv::CEnv (void) ALU2S[TALU5] = D::TRACK_SPACING_ALU5; ALU2S[TALU6] = D::TRACK_SPACING_ALU6; ALU2S[TALU7] = D::TRACK_SPACING_ALU7; + ALU2S[TALU8] = D::TRACK_SPACING_ALU8; // Layer to Z translation table. ALU2Z[ALU1] = 0; @@ -275,6 +283,7 @@ CEnv::CEnv (void) ALU2Z[ALU5] = 4; ALU2Z[ALU6] = 5; ALU2Z[ALU7] = 6; + ALU2Z[ALU8] = 7; ALU2Z[CALU1] = 0; ALU2Z[CALU2] = 1; ALU2Z[CALU3] = 2; @@ -282,6 +291,7 @@ CEnv::CEnv (void) ALU2Z[CALU5] = 4; ALU2Z[CALU6] = 5; ALU2Z[CALU7] = 6; + ALU2Z[CALU8] = 7; ALU2Z[TALU1] = 0; ALU2Z[TALU2] = 1; ALU2Z[TALU3] = 2; @@ -289,6 +299,7 @@ CEnv::CEnv (void) ALU2Z[TALU5] = 4; ALU2Z[TALU6] = 5; ALU2Z[TALU7] = 6; + ALU2Z[TALU8] = 7; regcomp(&pxLibRegex,"p.*px",REG_EXTENDED|REG_NOSUB); } diff --git a/alliance/src/nero/src/RDefs.h b/alliance/src/nero/src/RDefs.h index 31aac80c..4e0f9ead 100644 --- a/alliance/src/nero/src/RDefs.h +++ b/alliance/src/nero/src/RDefs.h @@ -1,7 +1,7 @@ // -*- C++ -*- // -// $Id: RDefs.h,v 1.5 2008/06/11 09:20:34 jpc Exp $ +// $Id: RDefs.h,v 1.6 2012/05/02 14:49:23 jpc Exp $ // // /-----------------------------------------------------------------\ // | | @@ -70,6 +70,8 @@ , int zup , int rtype , bool halfpitch + , bool xhalfpitch + , bool yalfpitch , bool rotate , set* subNetList=NULL ); public: void mbksave (string &name) throw (except_done); diff --git a/alliance/src/nero/src/RMBK.cpp b/alliance/src/nero/src/RMBK.cpp index d83666ca..55936b4a 100644 --- a/alliance/src/nero/src/RMBK.cpp +++ b/alliance/src/nero/src/RMBK.cpp @@ -1,7 +1,7 @@ // -*- C++ -*- // -// $Id: RMBK.cpp,v 1.17 2008/06/11 09:20:34 jpc Exp $ +// $Id: RMBK.cpp,v 1.18 2012/05/02 14:49:23 jpc Exp $ // // /----------------------------------------------------------------\ // | | @@ -38,6 +38,8 @@ void CRBox::mbkload (MBK::CFig *mbkfig , int zup , int rtype , bool halfpitch + , bool xhalfpitch + , bool yhalfpitch , bool rotate , set* subNetList ) { @@ -45,6 +47,7 @@ void CRBox::mbkload (MBK::CFig *mbkfig MBK::MLosig::iterator endSig; MBK::MLosig::iterator sig; long mX, mY, mZ, x, y, zz, xadjust, yadjust, yoffsetslice; + long xpitch, ypitch; long XRW1, YRW1, XRW2, YRW2; bool use_global; long northPad, southPad, eastPad, westPad; @@ -86,6 +89,12 @@ void CRBox::mbkload (MBK::CFig *mbkfig xoffsettrack = D::X_GRID / 2; yoffsettrack = D::Y_GRID / 2; } + else if ( xhalfpitch ) { + xoffsettrack = D::X_GRID / 2; + } + else if ( yhalfpitch ) { + yoffsettrack = D::Y_GRID / 2; + } // Search for pads. for (itIns = fig->instances.begin(); itIns != endInstances; itIns++) { diff --git a/alliance/src/nero/src/UConst.cpp b/alliance/src/nero/src/UConst.cpp index 914c65b6..e727f89b 100644 --- a/alliance/src/nero/src/UConst.cpp +++ b/alliance/src/nero/src/UConst.cpp @@ -1,7 +1,7 @@ // -*- C++ -*- // -// $Id: UConst.cpp,v 1.3 2005/10/13 12:44:40 jpc Exp $ +// $Id: UConst.cpp,v 1.4 2012/05/02 14:49:23 jpc Exp $ // // /-----------------------------------------------------------------\ // | | @@ -52,6 +52,7 @@ namespace D { // MBK Routing related constants. +#if 0 const long _X_GRID = 5; const long _Y_GRID = 5; const long _Y_SLICE = 50; @@ -71,6 +72,7 @@ namespace D { const long _TRACK_SPACING_ALU5 = 8; const long _TRACK_SPACING_ALU6 = 8; const long _TRACK_SPACING_ALU7 = 8; +#endif long X_GRID; long Y_GRID; @@ -84,6 +86,7 @@ namespace D { long TRACK_WIDTH_ALU5; long TRACK_WIDTH_ALU6; long TRACK_WIDTH_ALU7; + long TRACK_WIDTH_ALU8; long TRACK_SPACING_ALU1; long TRACK_SPACING_ALU2; long TRACK_SPACING_ALU3; @@ -91,6 +94,7 @@ namespace D { long TRACK_SPACING_ALU5; long TRACK_SPACING_ALU6; long TRACK_SPACING_ALU7; + long TRACK_SPACING_ALU8; diff --git a/alliance/src/nero/src/UDefs.h b/alliance/src/nero/src/UDefs.h index 5b9cba51..547ecfac 100644 --- a/alliance/src/nero/src/UDefs.h +++ b/alliance/src/nero/src/UDefs.h @@ -1,7 +1,7 @@ // -*- C++ -*- // -// $Id: UDefs.h,v 1.3 2005/10/13 12:44:40 jpc Exp $ +// $Id: UDefs.h,v 1.4 2012/05/02 14:49:23 jpc Exp $ // // /-----------------------------------------------------------------\ // | | @@ -89,6 +89,7 @@ namespace D { extern const long _TRACK_WIDTH_ALU5; extern const long _TRACK_WIDTH_ALU6; extern const long _TRACK_WIDTH_ALU7; + extern const long _TRACK_WIDTH_ALU8; extern const long _TRACK_SPACING_ALU1; extern const long _TRACK_SPACING_ALU2; extern const long _TRACK_SPACING_ALU3; @@ -96,6 +97,7 @@ namespace D { extern const long _TRACK_SPACING_ALU5; extern const long _TRACK_SPACING_ALU6; extern const long _TRACK_SPACING_ALU7; + extern const long _TRACK_SPACING_ALU8; extern long X_GRID; extern long Y_GRID; @@ -109,6 +111,7 @@ namespace D { extern long TRACK_WIDTH_ALU5; extern long TRACK_WIDTH_ALU6; extern long TRACK_WIDTH_ALU7; + extern long TRACK_WIDTH_ALU8; extern long TRACK_SPACING_ALU1; extern long TRACK_SPACING_ALU2; extern long TRACK_SPACING_ALU3; @@ -116,6 +119,7 @@ namespace D { extern long TRACK_SPACING_ALU5; extern long TRACK_SPACING_ALU6; extern long TRACK_SPACING_ALU7; + extern long TRACK_SPACING_ALU8; } diff --git a/alliance/src/nero/src/nero.cpp b/alliance/src/nero/src/nero.cpp index d26ecf41..2008b649 100644 --- a/alliance/src/nero/src/nero.cpp +++ b/alliance/src/nero/src/nero.cpp @@ -1,7 +1,7 @@ // -*- C++ -*- // -// $Id: nero.cpp,v 1.12 2008/06/11 09:20:35 jpc Exp $ +// $Id: nero.cpp,v 1.13 2012/05/02 14:49:23 jpc Exp $ // // /----------------------------------------------------------------\ // | | @@ -71,6 +71,8 @@ static void help (void) << " [-c|--core-dump] := Generate core dump if an internal " << "error occurs.\n" << " [-H|--half-pitch] := First track is at half pitch (both X & Y).\n" + << " [-x|--half-pitch-x] := First track is at half pitch (X).\n" + << " [-y|--half-pitch-y] := First track is at half pitch (Y).\n" << " [-R|--rotate] := Exchange preferred routing directions.\n" << " [-2|--layers-2] := Use only 2 routing layers.\n" << " [-3|--layers-3] := Use only 3 routing layers.\n" @@ -151,6 +153,8 @@ int main (int argc, char *argv[]) options.add ("h", "help"); options.add ("c", "coredump"); options.add ("H", "half-pitch"); + options.add ("x", "half-pitch-x"); + options.add ("y", "half-pitch-y"); options.add ("R", "rotate"); options.add ("2", "layers-2"); options.add ("3", "layers-3"); @@ -249,6 +253,8 @@ int main (int argc, char *argv[]) , 4 , global , options["H"]->parsed + , options["x"]->parsed + , options["y"]->parsed , options["R"]->parsed , netSet ); //cdebug.off ();