addrdsinsrec

ADDRDSINSREC(3)             RDS PHYSICAL FUNCTIONS             ADDRDSINSREC(3)



NAME
        addrdsinsrec - adds a rectangle to an instance


ORIGIN
       This software belongs to the  ALLIANCE CAD SYSTEM developed by the ASIM
       team at LIP6 laboratory of Université Pierre et Marie CURIE, in Paris,
       France.

       Web : http://asim.lip6.fr/recherche/alliance/
       E-mail : alliance-users@asim.lip6.fr


SYNOPSYS
       #include"rdsnnn.h"
        rdsrec_list ∗addrdsinsrec( Instance, Name, Layer, X, Y, Dx, Dy )
          rdsins_list ∗Instance;
          char        ∗Name;
          char         Layer;
          long         X;
          long         Y;
          long         Dx;
          long         Dy;

PARAMETER
       Instance            The instance which contains the rectangle to add.

       Name                Name of the rectangle to add.

       Layer               Layer of the rectangle to add.

       X,Y,DX,DY           Dimensions of the the rectangle to add.

DESCRIPTION
       This function creates an adds a rectangle to an instance. The size of
       the user structure to add (if if exists) next to the structure
       rdsrec_list is defined by the field SIZE of the instance which has to
       contain the rectangle. The rectangle is chained to the head of the
       rectangles's list associated to the defined layer in parameters of the
       function addrdsinsrec(). The fields of the rectangle structure are
       modified as follows :

       The field NAME is set to ´Name´.
       The field X is set to ´X´.
       The field Y is set to ´Y´.
       The field DX is set to ´Dx´.
       The field DY is set to ´Dy´.
       The field FLAGS is modified with the value ´Layer´.

       Note :

       - This function uses MBK namealloc() function.

       - coordinates of the rectangle are related to the instance before
       geometrical transformation.

RETURN VALUE
       The pointer to the added rectangle. It is also the head of rectangles's
       list associated to the corresponding layer.

ERRORS
       "Rds202: rdsalloc error, can't continue !"
              it's impossible to allocate the memory size desired

EXAMPLE
               #include "mutnnn.h"
               #include "rdsnnn.h"
               #include "rtlnnn.h"
               typedef struct UserStruct
                {
                  char ∗STRING;
                  void ∗USER1;
                } UserStruct;
               # define POINTER_STRING(R)                                \
                                                                         \
                 (((UserStruct ∗)((char ∗)(R)+sizeof(rdsrec_list)))->STRING )
                main()
                 {
                   rdsfig_list ∗RdsFigure;
                   rdsins_list ∗Instance;
                   rdsrec_list ∗Rectangle;
                   char Layer;
                   rdsrec_list ∗ScanRec;
                   mbkenv();
                   rdsenv();
                   loadrdsparam();
                   RdsFigure = addrdsfig ("core",sizeof ( UserStruct ) );
                   Instance  = addrdsins (RdsFigure,"na2_y","and2",RDS_NOSYM,8,6);
                   Rectangle = addrdsinsrec (Instance,"Alu1",RDS_ALU1,2,4,12,1);
                   POINTER_STRING( Rectangle ) = namealloc ("un_alu1");
                   /∗
                      Displays caracteristics of all the rectangles of the instance
                   ∗/
                  for ( Layer = 0 ; Layer < RDS_MAX_LAYER ; Layer ++ )
                   {
                     for (
                            ScanRec  = Instance->LAYERTAB[Layer] ;
                            ScanRec != (rdsrec_list ∗) NULL      ;
                            ScanRec  = ScanRec->NEXT
                         )
                      {
                        printf("Rectangle->LAYER = %s\n",
                           RDS_LAYER_NAME[GetRdsLayer(ScanRec)]);
                        printf("Rectangle->NAME   = %s\n",ScanRec->NAME);
                        printf("Rectangle->X      = %ld\n",ScanRec->X);
                        printf("Rectangle->Y      = %ld\n",ScanRec->Y);
                        printf("Rectangle->DX     = %ld\n",ScanRec->DX);
                        printf("Rectangle->DY     = %ld\n",ScanRec->DY);
                        printf("Rectangle->STRING = %s\n",POINTER_STRING(ScanRec));
                      }
                   }
                 }

SEE ALSO
       librds, delrdsinsrec, viewrdsins




BUG REPORT
       This tool is under development at the ASIM department of the LIP6
       laboratory.
       We need your feedback to improve documentation and tools.






ASIM/LIP6                       October 1, 1997                ADDRDSINSREC(3)