Introduce configuration variables for the Ring router.
* New: In MBK, read new environment variables for ring router RING_WMIN_ALU1, RING_DMIN_ALU1, ... * New: In RDS, in rprparse.c add entry in table MBK_WIRESETTING for the new ring variables. * Change: In RDS, in rfmaccess.c, degenerate a BIGVIA into a default VIA when one of it's side is inferior to SIDE*1.5. This allow ring to keep it's 6x6 BIGVIAs. Contributed by N. Shimizu.
This commit is contained in:
parent
6e258b40dd
commit
601c919035
|
@ -90,6 +90,15 @@ long MBK_TRACK_SPACING_ALU5 = 8;
|
|||
long MBK_TRACK_SPACING_ALU6 = 8;
|
||||
long MBK_TRACK_SPACING_ALU7 = 8;
|
||||
long MBK_TRACK_SPACING_ALU8 = 0;
|
||||
unsigned long RING_WMIN_ALU1 = 2;
|
||||
unsigned long RING_WMIN_ALU2 = 2;
|
||||
unsigned long RING_DMIN_ALU1_ALU1 = 3;
|
||||
unsigned long RING_DMIN_ALU2_ALU2 = 3;
|
||||
unsigned long RING_WVIA_ALU1 = 2;
|
||||
unsigned long RING_WVIA_ALU2 = 3;
|
||||
unsigned long RING_EXTENSION_ALU2 = 1;
|
||||
unsigned long RING_BV_VIA_VIA = 4;
|
||||
unsigned long RING_WALIM = 60;
|
||||
char PARSER_INFO[100] = "nothing yet"; /* version number, and so on */
|
||||
char *VDD = NULL; /* user name for power high */
|
||||
char *VSS = NULL; /* user name for power ground */
|
||||
|
@ -302,6 +311,43 @@ static char MBK_RAND_SEED[] = { 0x62,
|
|||
if (str != NULL)
|
||||
MBK_TRACK_SPACING_ALU8 = (long)atoi(str);
|
||||
|
||||
str = mbkgetenv("RING_WMIN_ALU1");
|
||||
if (str != NULL)
|
||||
RING_WMIN_ALU1 - (long)atoi(str);
|
||||
|
||||
str = mbkgetenv("RING_WMIN_ALU2");
|
||||
if (str != NULL)
|
||||
RING_WMIN_ALU2 - (long)atoi(str);
|
||||
|
||||
str = mbkgetenv("RING_DMIN_ALU1_ALU1");
|
||||
if (str != NULL)
|
||||
RING_DMIN_ALU1_ALU1 - (long)atoi(str);
|
||||
|
||||
str = mbkgetenv("RING_DMIN_ALU2_ALU2");
|
||||
if (str != NULL)
|
||||
RING_DMIN_ALU2_ALU2 - (long)atoi(str);
|
||||
|
||||
str = mbkgetenv("RING_WVIA_ALU1");
|
||||
if (str != NULL)
|
||||
RING_WVIA_ALU1 - (long)atoi(str);
|
||||
|
||||
str = mbkgetenv("RING_WVIA_ALU2");
|
||||
if (str != NULL)
|
||||
RING_WVIA_ALU2 - (long)atoi(str);
|
||||
|
||||
str = mbkgetenv("RING_EXTENSION_ALU2");
|
||||
if (str != NULL)
|
||||
RING_EXTENSION_ALU2 - (long)atoi(str);
|
||||
|
||||
str = mbkgetenv("RING_BV_VIA_VIA");
|
||||
if (str != NULL)
|
||||
RING_BV_VIA_VIA - (long)atoi(str);
|
||||
|
||||
str = mbkgetenv("RING_WALIM");
|
||||
if (str != NULL)
|
||||
RING_WALIM - (long)atoi(str);
|
||||
|
||||
|
||||
srand((unsigned int) MBK_RAND_SEED);
|
||||
|
||||
str = mbkgetenv("MBK_IN_LO");
|
||||
|
|
|
@ -211,6 +211,17 @@ extern long MBK_TRACK_SPACING_ALU5;
|
|||
extern long MBK_TRACK_SPACING_ALU6;
|
||||
extern long MBK_TRACK_SPACING_ALU7;
|
||||
extern long MBK_TRACK_SPACING_ALU8;
|
||||
|
||||
extern unsigned long RING_WMIN_ALU1;
|
||||
extern unsigned long RING_WMIN_ALU2;
|
||||
extern unsigned long RING_DMIN_ALU1_ALU1;
|
||||
extern unsigned long RING_DMIN_ALU2_ALU2;
|
||||
extern unsigned long RING_WVIA_ALU1;
|
||||
extern unsigned long RING_WVIA_ALU2;
|
||||
extern unsigned long RING_EXTENSION_ALU2;
|
||||
extern unsigned long RING_BV_VIA_VIA;
|
||||
extern unsigned long RING_WALIM;
|
||||
|
||||
extern char PARSER_INFO[]; /* version number, and so on */
|
||||
extern char *VDD; /* user name for power high */
|
||||
extern char *VSS; /* user name for power ground */
|
||||
|
|
|
@ -478,8 +478,8 @@ rdsrec_list *viambkrds( Figure, Via, Lynx )
|
|||
( ( USE == RDS_USE_DRC ) && ( ! Lynx ) ) )
|
||||
{
|
||||
if ( SIDE_STEP == 0 ) break;
|
||||
if ( WSX < (SIDE_STEP << 1) ) break;
|
||||
if ( WSY < (SIDE_STEP << 1) ) break;
|
||||
if ( WSX < SIDE+(SIDE>>1) ) break;
|
||||
if ( WSY < SIDE+(SIDE>>1) ) break;
|
||||
|
||||
X1R = Xvia + OVERLAP - ( ( WSX + DWR ) >> 1 );
|
||||
Y1R = Yvia + OVERLAP - ( ( WSY + DWR ) >> 1 );
|
||||
|
|
|
@ -103,6 +103,10 @@ extern long MBK_X_GRID, MBK_Y_GRID, MBK_Y_SLICE, MBK_WIDTH_VSS, MBK_WIDTH_VDD,
|
|||
MBK_TRACK_SPACING_ALU7, MBK_TRACK_SPACING_ALU8;
|
||||
long *RDS_WIRESETTING_TABLE [ MBK_MAX_WIRESETTING ] =
|
||||
{
|
||||
&RING_BV_VIA_VIA,
|
||||
&RING_DMIN_ALU1_ALU1,
|
||||
&RING_DMIN_ALU2_ALU2,
|
||||
&RING_EXTENSION_ALU2,
|
||||
&MBK_TRACK_SPACING_ALU1, &MBK_TRACK_SPACING_ALU2,
|
||||
&MBK_TRACK_SPACING_ALU3, &MBK_TRACK_SPACING_ALU4,
|
||||
&MBK_TRACK_SPACING_ALU5, &MBK_TRACK_SPACING_ALU6,
|
||||
|
@ -111,9 +115,15 @@ extern long MBK_X_GRID, MBK_Y_GRID, MBK_Y_SLICE, MBK_WIDTH_VSS, MBK_WIDTH_VDD,
|
|||
&MBK_TRACK_WIDTH_ALU3, &MBK_TRACK_WIDTH_ALU4,
|
||||
&MBK_TRACK_WIDTH_ALU5, &MBK_TRACK_WIDTH_ALU6,
|
||||
&MBK_TRACK_WIDTH_ALU7, &MBK_TRACK_WIDTH_ALU8,
|
||||
&RING_WALIM,
|
||||
&MBK_WIDTH_VDD,
|
||||
&MBK_WIDTH_VSS,
|
||||
&RING_WMIN_ALU1,
|
||||
&RING_WMIN_ALU2,
|
||||
&RING_WVIA_ALU1,
|
||||
&RING_WVIA_ALU2,
|
||||
&MBK_X_GRID, &MBK_Y_GRID, &MBK_Y_SLICE
|
||||
|
||||
};
|
||||
/*------------------------------------------------------------\
|
||||
| |
|
||||
|
@ -412,6 +422,10 @@ extern long MBK_X_GRID, MBK_Y_GRID, MBK_Y_SLICE, MBK_WIDTH_VSS, MBK_WIDTH_VDD,
|
|||
char MBK_WIRESETTING_NAME [ MBK_MAX_WIRESETTING ][ MBK_MAX_WIRESETTING_TLEN ] =
|
||||
|
||||
{
|
||||
"bv_via_via",
|
||||
"dmin_alu1_alu1",
|
||||
"dmin_alu2_alu2",
|
||||
"extension_alu2",
|
||||
"track_spacing_alu1",
|
||||
"track_spacing_alu2",
|
||||
"track_spacing_alu3",
|
||||
|
@ -428,8 +442,13 @@ extern long MBK_X_GRID, MBK_Y_GRID, MBK_Y_SLICE, MBK_WIDTH_VSS, MBK_WIDTH_VDD,
|
|||
"track_width_alu6",
|
||||
"track_width_alu7",
|
||||
"track_width_alu8",
|
||||
"walim",
|
||||
"width_vdd",
|
||||
"width_vss",
|
||||
"wmin_alu1",
|
||||
"wmin_alu2",
|
||||
"wvia_alu1",
|
||||
"wvia_alu2",
|
||||
"x_grid",
|
||||
"y_grid",
|
||||
"y_slice"
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
# define RPR_MAX_BUFFER 512
|
||||
# define RPR_MAX_KEYWORD 151
|
||||
|
||||
# define MBK_MAX_WIRESETTING 21
|
||||
# define MBK_MAX_WIRESETTING 30
|
||||
# define RPR_SEPARATORS_STRING " \t\n"
|
||||
# define RPR_COMMENT_CHAR '#'
|
||||
|
||||
|
|
|
@ -132,8 +132,16 @@ void lecture_param(int nbarg, char** tab, char** nom_circuit_lo,
|
|||
mbkenv(); /* choix de l'utilisateur mis dans des variables UNIX */
|
||||
/* on recupere (long) SCALE_X */
|
||||
|
||||
if (mode_debug)
|
||||
if (mode_debug) {
|
||||
printf("CATALNAME is %s\n", CATAL);
|
||||
printf("WMIN_ALU1 is %ld\n", WMIN_ALU1);
|
||||
printf("WVIA_ALU1 is %ld\n", WVIA_ALU1);
|
||||
printf("WMIN_ALU2 is %ld\n", WMIN_ALU2);
|
||||
printf("WVIA_ALU2 is %ld\n", WVIA_ALU2);
|
||||
printf("DMIN_ALU1_ALU1 is %ld\n", DMIN_ALU1_ALU1);
|
||||
printf("DMIN_ALU2_ALU2 is %ld\n", DMIN_ALU2_ALU2);
|
||||
printf("BV_VIA_VIA is %ld\n", BV_VIA_VIA);
|
||||
}
|
||||
|
||||
if (NULL == (f_catal = mbkfopen(CATAL, NULL, READ_TEXT)))
|
||||
ringerreur(ERR_CATAL, CATAL, NULL);
|
||||
|
|
|
@ -77,19 +77,20 @@
|
|||
#define OUEST 2
|
||||
#define EST 3
|
||||
/* Nombres entiers obligatoires ! */
|
||||
#define WMIN_ALU1 MBK_TRACK_WIDTH_ALU2 /* largeur minimum de l'alu1,l'alu2,dist mini alu1<->alu2 */
|
||||
#define WMIN_ALU2 MBK_TRACK_WIDTH_ALU2 /* et largeur du via */
|
||||
#define DMIN_ALU1_ALU1 ((MBK_TRACK_SPACING_ALU1+(MBK_TRACK_SPACING_ALU1)%2)/2) /* dmin en a1 a1 2.5 arrondi a 3 */
|
||||
#define DMIN_ALU2_ALU2 ((MBK_TRACK_SPACING_ALU2+(MBK_TRACK_SPACING_ALU2)%2)/2)
|
||||
#define WVIA_ALU1 MBK_TRACK_WIDTH_ALU1 /* largeur du via pour l'alu1 */
|
||||
#define WVIA_ALU2 MBK_TRACK_WIDTH_ALU2 /* largeur du via pour l'alu2 */
|
||||
#define WMIN_ALU1 RING_WMIN_ALU1
|
||||
#define WMIN_ALU2 RING_WMIN_ALU2
|
||||
#define DMIN_ALU1_ALU1 RING_DMIN_ALU1_ALU1
|
||||
#define DMIN_ALU2_ALU2 RING_DMIN_ALU2_ALU2
|
||||
#define WVIA_ALU1 RING_WVIA_ALU1
|
||||
|
||||
#define EXTENSION_ALU2 1 /* extension alu2 pour fignoler coin couronne */
|
||||
#define WVIA_ALU2 RING_WVIA_ALU2 /* largeur du via pour l'alu2 */
|
||||
|
||||
#define BV_VIA_VIA (MBK_TRACK_WIDTH_ALU2+MBK_TRACK_WIDTH_ALU2%2) /* must be even, whatever! */
|
||||
#define EXTENSION_ALU2 RING_EXTENSION_ALU2 /* pour fignoler coin couronne */
|
||||
|
||||
#define BV_VIA_VIA RING_BV_VIA_VIA /* must be even, whatever! */
|
||||
#define BV_VIASIZE WVIA_ALU2 /* design rule for equipotential vias */
|
||||
|
||||
#define WALIM 60 /* largeur prdefinie des alim */
|
||||
#define WALIM RING_WALIM /* largeur prdefinie des alim */
|
||||
|
||||
/*#define PISTE_DEP_ALIMPLOT 10 Nombre de piste a considerer pour une deport alim plot */
|
||||
/* code des ringerreurs traitees par ringerreur(code) */
|
||||
|
|
Loading…
Reference in New Issue