Merge patch from Naohiko Shimizu <nshimizu@ip-arch.jp>.

Variable gabarit for pharosc.
This commit is contained in:
Jean-Paul Chaput 2012-05-02 14:49:23 +00:00
parent 544ad6c3e2
commit aac539856b
6 changed files with 61 additions and 25 deletions

View File

@ -1,7 +1,7 @@
// -*- C++ -*- // -*- 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::"). // Copy constants values from constants namespace ("D::").
// Routing constants, loaded now that we have SCALE_X. // Routing constants, loaded now that we have SCALE_X.
D::X_GRID = ::MBK::SCALE (D::_X_GRID); D::X_GRID = ::MBK::SCALE (MBK_X_GRID);
D::Y_GRID = ::MBK::SCALE (D::_Y_GRID); D::Y_GRID = ::MBK::SCALE (MBK_Y_GRID);
D::WIDTH_VSS = ::MBK::SCALE (D::_WIDTH_VSS); D::WIDTH_VSS = ::MBK::SCALE (MBK_WIDTH_VSS);
D::WIDTH_VDD = ::MBK::SCALE (D::_WIDTH_VDD); D::WIDTH_VDD = ::MBK::SCALE (MBK_WIDTH_VDD);
D::Y_SLICE = ::MBK::SCALE (D::_Y_SLICE); D::Y_SLICE = ::MBK::SCALE (MBK_Y_SLICE);
D::TRACK_WIDTH_ALU1 = ::MBK::SCALE (D::_TRACK_WIDTH_ALU1); D::TRACK_WIDTH_ALU1 = ::MBK::SCALE (MBK_TRACK_WIDTH_ALU1);
D::TRACK_WIDTH_ALU2 = ::MBK::SCALE (D::_TRACK_WIDTH_ALU2); D::TRACK_WIDTH_ALU2 = ::MBK::SCALE (MBK_TRACK_WIDTH_ALU2);
D::TRACK_WIDTH_ALU3 = ::MBK::SCALE (D::_TRACK_WIDTH_ALU3); D::TRACK_WIDTH_ALU3 = ::MBK::SCALE (MBK_TRACK_WIDTH_ALU3);
D::TRACK_WIDTH_ALU4 = ::MBK::SCALE (D::_TRACK_WIDTH_ALU4); D::TRACK_WIDTH_ALU4 = ::MBK::SCALE (MBK_TRACK_WIDTH_ALU4);
D::TRACK_WIDTH_ALU5 = ::MBK::SCALE (D::_TRACK_WIDTH_ALU5); D::TRACK_WIDTH_ALU5 = ::MBK::SCALE (MBK_TRACK_WIDTH_ALU5);
D::TRACK_WIDTH_ALU6 = ::MBK::SCALE (D::_TRACK_WIDTH_ALU6); D::TRACK_WIDTH_ALU6 = ::MBK::SCALE (MBK_TRACK_WIDTH_ALU6);
D::TRACK_WIDTH_ALU7 = ::MBK::SCALE (D::_TRACK_WIDTH_ALU7); D::TRACK_WIDTH_ALU7 = ::MBK::SCALE (MBK_TRACK_WIDTH_ALU7);
D::TRACK_SPACING_ALU1 = ::MBK::SCALE (D::_TRACK_SPACING_ALU1); D::TRACK_WIDTH_ALU8 = ::MBK::SCALE (MBK_TRACK_WIDTH_ALU8);
D::TRACK_SPACING_ALU2 = ::MBK::SCALE (D::_TRACK_SPACING_ALU2); D::TRACK_SPACING_ALU1 = ::MBK::SCALE (MBK_TRACK_SPACING_ALU1);
D::TRACK_SPACING_ALU3 = ::MBK::SCALE (D::_TRACK_SPACING_ALU3); D::TRACK_SPACING_ALU2 = ::MBK::SCALE (MBK_TRACK_SPACING_ALU2);
D::TRACK_SPACING_ALU4 = ::MBK::SCALE (D::_TRACK_SPACING_ALU4); D::TRACK_SPACING_ALU3 = ::MBK::SCALE (MBK_TRACK_SPACING_ALU3);
D::TRACK_SPACING_ALU5 = ::MBK::SCALE (D::_TRACK_SPACING_ALU5); D::TRACK_SPACING_ALU4 = ::MBK::SCALE (MBK_TRACK_SPACING_ALU4);
D::TRACK_SPACING_ALU6 = ::MBK::SCALE (D::_TRACK_SPACING_ALU6); D::TRACK_SPACING_ALU5 = ::MBK::SCALE (MBK_TRACK_SPACING_ALU5);
D::TRACK_SPACING_ALU7 = ::MBK::SCALE (D::_TRACK_SPACING_ALU7); 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 spacing.
grid_dx = D::X_GRID; grid_dx = D::X_GRID;
@ -229,6 +231,7 @@ CEnv::CEnv (void)
ALU2W[ALU5] = D::TRACK_WIDTH_ALU5; ALU2W[ALU5] = D::TRACK_WIDTH_ALU5;
ALU2W[ALU6] = D::TRACK_WIDTH_ALU6; ALU2W[ALU6] = D::TRACK_WIDTH_ALU6;
ALU2W[ALU7] = D::TRACK_WIDTH_ALU7; ALU2W[ALU7] = D::TRACK_WIDTH_ALU7;
ALU2W[ALU8] = D::TRACK_WIDTH_ALU8;
ALU2W[CALU1] = D::TRACK_WIDTH_ALU1; ALU2W[CALU1] = D::TRACK_WIDTH_ALU1;
ALU2W[CALU2] = D::TRACK_WIDTH_ALU2; ALU2W[CALU2] = D::TRACK_WIDTH_ALU2;
ALU2W[CALU3] = D::TRACK_WIDTH_ALU3; ALU2W[CALU3] = D::TRACK_WIDTH_ALU3;
@ -236,6 +239,7 @@ CEnv::CEnv (void)
ALU2W[CALU5] = D::TRACK_WIDTH_ALU5; ALU2W[CALU5] = D::TRACK_WIDTH_ALU5;
ALU2W[CALU6] = D::TRACK_WIDTH_ALU6; ALU2W[CALU6] = D::TRACK_WIDTH_ALU6;
ALU2W[CALU7] = D::TRACK_WIDTH_ALU7; ALU2W[CALU7] = D::TRACK_WIDTH_ALU7;
ALU2W[CALU8] = D::TRACK_WIDTH_ALU8;
ALU2W[TALU1] = D::TRACK_WIDTH_ALU1; ALU2W[TALU1] = D::TRACK_WIDTH_ALU1;
ALU2W[TALU2] = D::TRACK_WIDTH_ALU2; ALU2W[TALU2] = D::TRACK_WIDTH_ALU2;
ALU2W[TALU3] = D::TRACK_WIDTH_ALU3; ALU2W[TALU3] = D::TRACK_WIDTH_ALU3;
@ -243,6 +247,7 @@ CEnv::CEnv (void)
ALU2W[TALU5] = D::TRACK_WIDTH_ALU5; ALU2W[TALU5] = D::TRACK_WIDTH_ALU5;
ALU2W[TALU6] = D::TRACK_WIDTH_ALU6; ALU2W[TALU6] = D::TRACK_WIDTH_ALU6;
ALU2W[TALU7] = D::TRACK_WIDTH_ALU7; ALU2W[TALU7] = D::TRACK_WIDTH_ALU7;
ALU2W[TALU8] = D::TRACK_WIDTH_ALU8;
// Layers minimal width. // Layers minimal width.
ALU2S[ALU1] = D::TRACK_SPACING_ALU1; ALU2S[ALU1] = D::TRACK_SPACING_ALU1;
@ -252,6 +257,7 @@ CEnv::CEnv (void)
ALU2S[ALU5] = D::TRACK_SPACING_ALU5; ALU2S[ALU5] = D::TRACK_SPACING_ALU5;
ALU2S[ALU6] = D::TRACK_SPACING_ALU6; ALU2S[ALU6] = D::TRACK_SPACING_ALU6;
ALU2S[ALU7] = D::TRACK_SPACING_ALU7; ALU2S[ALU7] = D::TRACK_SPACING_ALU7;
ALU2S[ALU8] = D::TRACK_SPACING_ALU8;
ALU2S[CALU1] = D::TRACK_SPACING_ALU1; ALU2S[CALU1] = D::TRACK_SPACING_ALU1;
ALU2S[CALU2] = D::TRACK_SPACING_ALU2; ALU2S[CALU2] = D::TRACK_SPACING_ALU2;
ALU2S[CALU3] = D::TRACK_SPACING_ALU3; ALU2S[CALU3] = D::TRACK_SPACING_ALU3;
@ -259,6 +265,7 @@ CEnv::CEnv (void)
ALU2S[CALU5] = D::TRACK_SPACING_ALU5; ALU2S[CALU5] = D::TRACK_SPACING_ALU5;
ALU2S[CALU6] = D::TRACK_SPACING_ALU6; ALU2S[CALU6] = D::TRACK_SPACING_ALU6;
ALU2S[CALU7] = D::TRACK_SPACING_ALU7; ALU2S[CALU7] = D::TRACK_SPACING_ALU7;
ALU2S[CALU8] = D::TRACK_SPACING_ALU8;
ALU2S[TALU1] = D::TRACK_SPACING_ALU1; ALU2S[TALU1] = D::TRACK_SPACING_ALU1;
ALU2S[TALU2] = D::TRACK_SPACING_ALU2; ALU2S[TALU2] = D::TRACK_SPACING_ALU2;
ALU2S[TALU3] = D::TRACK_SPACING_ALU3; ALU2S[TALU3] = D::TRACK_SPACING_ALU3;
@ -266,6 +273,7 @@ CEnv::CEnv (void)
ALU2S[TALU5] = D::TRACK_SPACING_ALU5; ALU2S[TALU5] = D::TRACK_SPACING_ALU5;
ALU2S[TALU6] = D::TRACK_SPACING_ALU6; ALU2S[TALU6] = D::TRACK_SPACING_ALU6;
ALU2S[TALU7] = D::TRACK_SPACING_ALU7; ALU2S[TALU7] = D::TRACK_SPACING_ALU7;
ALU2S[TALU8] = D::TRACK_SPACING_ALU8;
// Layer to Z translation table. // Layer to Z translation table.
ALU2Z[ALU1] = 0; ALU2Z[ALU1] = 0;
@ -275,6 +283,7 @@ CEnv::CEnv (void)
ALU2Z[ALU5] = 4; ALU2Z[ALU5] = 4;
ALU2Z[ALU6] = 5; ALU2Z[ALU6] = 5;
ALU2Z[ALU7] = 6; ALU2Z[ALU7] = 6;
ALU2Z[ALU8] = 7;
ALU2Z[CALU1] = 0; ALU2Z[CALU1] = 0;
ALU2Z[CALU2] = 1; ALU2Z[CALU2] = 1;
ALU2Z[CALU3] = 2; ALU2Z[CALU3] = 2;
@ -282,6 +291,7 @@ CEnv::CEnv (void)
ALU2Z[CALU5] = 4; ALU2Z[CALU5] = 4;
ALU2Z[CALU6] = 5; ALU2Z[CALU6] = 5;
ALU2Z[CALU7] = 6; ALU2Z[CALU7] = 6;
ALU2Z[CALU8] = 7;
ALU2Z[TALU1] = 0; ALU2Z[TALU1] = 0;
ALU2Z[TALU2] = 1; ALU2Z[TALU2] = 1;
ALU2Z[TALU3] = 2; ALU2Z[TALU3] = 2;
@ -289,6 +299,7 @@ CEnv::CEnv (void)
ALU2Z[TALU5] = 4; ALU2Z[TALU5] = 4;
ALU2Z[TALU6] = 5; ALU2Z[TALU6] = 5;
ALU2Z[TALU7] = 6; ALU2Z[TALU7] = 6;
ALU2Z[TALU8] = 7;
regcomp(&pxLibRegex,"p.*px",REG_EXTENDED|REG_NOSUB); regcomp(&pxLibRegex,"p.*px",REG_EXTENDED|REG_NOSUB);
} }

View File

@ -1,7 +1,7 @@
// -*- C++ -*- // -*- 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 zup
, int rtype , int rtype
, bool halfpitch , bool halfpitch
, bool xhalfpitch
, bool yalfpitch
, bool rotate , bool rotate
, set<string>* subNetList=NULL ); , set<string>* subNetList=NULL );
public: void mbksave (string &name) throw (except_done); public: void mbksave (string &name) throw (except_done);

View File

@ -1,7 +1,7 @@
// -*- C++ -*- // -*- 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 zup
, int rtype , int rtype
, bool halfpitch , bool halfpitch
, bool xhalfpitch
, bool yhalfpitch
, bool rotate , bool rotate
, set<string>* subNetList ) , set<string>* subNetList )
{ {
@ -45,6 +47,7 @@ void CRBox::mbkload (MBK::CFig *mbkfig
MBK::MLosig::iterator endSig; MBK::MLosig::iterator endSig;
MBK::MLosig::iterator sig; MBK::MLosig::iterator sig;
long mX, mY, mZ, x, y, zz, xadjust, yadjust, yoffsetslice; long mX, mY, mZ, x, y, zz, xadjust, yadjust, yoffsetslice;
long xpitch, ypitch;
long XRW1, YRW1, XRW2, YRW2; long XRW1, YRW1, XRW2, YRW2;
bool use_global; bool use_global;
long northPad, southPad, eastPad, westPad; long northPad, southPad, eastPad, westPad;
@ -86,6 +89,12 @@ void CRBox::mbkload (MBK::CFig *mbkfig
xoffsettrack = D::X_GRID / 2; xoffsettrack = D::X_GRID / 2;
yoffsettrack = D::Y_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. // Search for pads.
for (itIns = fig->instances.begin(); itIns != endInstances; itIns++) { for (itIns = fig->instances.begin(); itIns != endInstances; itIns++) {

View File

@ -1,7 +1,7 @@
// -*- C++ -*- // -*- 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. // MBK Routing related constants.
#if 0
const long _X_GRID = 5; const long _X_GRID = 5;
const long _Y_GRID = 5; const long _Y_GRID = 5;
const long _Y_SLICE = 50; const long _Y_SLICE = 50;
@ -71,6 +72,7 @@ namespace D {
const long _TRACK_SPACING_ALU5 = 8; const long _TRACK_SPACING_ALU5 = 8;
const long _TRACK_SPACING_ALU6 = 8; const long _TRACK_SPACING_ALU6 = 8;
const long _TRACK_SPACING_ALU7 = 8; const long _TRACK_SPACING_ALU7 = 8;
#endif
long X_GRID; long X_GRID;
long Y_GRID; long Y_GRID;
@ -84,6 +86,7 @@ namespace D {
long TRACK_WIDTH_ALU5; long TRACK_WIDTH_ALU5;
long TRACK_WIDTH_ALU6; long TRACK_WIDTH_ALU6;
long TRACK_WIDTH_ALU7; long TRACK_WIDTH_ALU7;
long TRACK_WIDTH_ALU8;
long TRACK_SPACING_ALU1; long TRACK_SPACING_ALU1;
long TRACK_SPACING_ALU2; long TRACK_SPACING_ALU2;
long TRACK_SPACING_ALU3; long TRACK_SPACING_ALU3;
@ -91,6 +94,7 @@ namespace D {
long TRACK_SPACING_ALU5; long TRACK_SPACING_ALU5;
long TRACK_SPACING_ALU6; long TRACK_SPACING_ALU6;
long TRACK_SPACING_ALU7; long TRACK_SPACING_ALU7;
long TRACK_SPACING_ALU8;

View File

@ -1,7 +1,7 @@
// -*- C++ -*- // -*- 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_ALU5;
extern const long _TRACK_WIDTH_ALU6; extern const long _TRACK_WIDTH_ALU6;
extern const long _TRACK_WIDTH_ALU7; extern const long _TRACK_WIDTH_ALU7;
extern const long _TRACK_WIDTH_ALU8;
extern const long _TRACK_SPACING_ALU1; extern const long _TRACK_SPACING_ALU1;
extern const long _TRACK_SPACING_ALU2; extern const long _TRACK_SPACING_ALU2;
extern const long _TRACK_SPACING_ALU3; extern const long _TRACK_SPACING_ALU3;
@ -96,6 +97,7 @@ namespace D {
extern const long _TRACK_SPACING_ALU5; extern const long _TRACK_SPACING_ALU5;
extern const long _TRACK_SPACING_ALU6; extern const long _TRACK_SPACING_ALU6;
extern const long _TRACK_SPACING_ALU7; extern const long _TRACK_SPACING_ALU7;
extern const long _TRACK_SPACING_ALU8;
extern long X_GRID; extern long X_GRID;
extern long Y_GRID; extern long Y_GRID;
@ -109,6 +111,7 @@ namespace D {
extern long TRACK_WIDTH_ALU5; extern long TRACK_WIDTH_ALU5;
extern long TRACK_WIDTH_ALU6; extern long TRACK_WIDTH_ALU6;
extern long TRACK_WIDTH_ALU7; extern long TRACK_WIDTH_ALU7;
extern long TRACK_WIDTH_ALU8;
extern long TRACK_SPACING_ALU1; extern long TRACK_SPACING_ALU1;
extern long TRACK_SPACING_ALU2; extern long TRACK_SPACING_ALU2;
extern long TRACK_SPACING_ALU3; extern long TRACK_SPACING_ALU3;
@ -116,6 +119,7 @@ namespace D {
extern long TRACK_SPACING_ALU5; extern long TRACK_SPACING_ALU5;
extern long TRACK_SPACING_ALU6; extern long TRACK_SPACING_ALU6;
extern long TRACK_SPACING_ALU7; extern long TRACK_SPACING_ALU7;
extern long TRACK_SPACING_ALU8;
} }

View File

@ -1,7 +1,7 @@
// -*- C++ -*- // -*- 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 " << " [-c|--core-dump] := Generate core dump if an internal "
<< "error occurs.\n" << "error occurs.\n"
<< " [-H|--half-pitch] := First track is at half pitch (both X & Y).\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" << " [-R|--rotate] := Exchange preferred routing directions.\n"
<< " [-2|--layers-2] := Use only 2 routing layers.\n" << " [-2|--layers-2] := Use only 2 routing layers.\n"
<< " [-3|--layers-3] := Use only 3 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 ("h", "help");
options.add ("c", "coredump"); options.add ("c", "coredump");
options.add ("H", "half-pitch"); options.add ("H", "half-pitch");
options.add ("x", "half-pitch-x");
options.add ("y", "half-pitch-y");
options.add ("R", "rotate"); options.add ("R", "rotate");
options.add ("2", "layers-2"); options.add ("2", "layers-2");
options.add ("3", "layers-3"); options.add ("3", "layers-3");
@ -249,6 +253,8 @@ int main (int argc, char *argv[])
, 4 , 4
, global , global
, options["H"]->parsed , options["H"]->parsed
, options["x"]->parsed
, options["y"]->parsed
, options["R"]->parsed , options["R"]->parsed
, netSet ); , netSet );
//cdebug.off (); //cdebug.off ();