Provided by: alliance_5.0-20120515-6_amd64 bug

NAME

       PAT - Generic pattern data structure

DESCRIPTION

       PAT  is  a  generic  data  structure supporting vlsi concepts.  It allows representation of a sequence of
       simulation patterns in a data structure.

       The goal of PAT is to define an ad hoc single data structure (object), with well known fixed meaning  for
       each  concept  manipulated  in pattern description. So any tools that needs to access simulation patterns
       can be build upon it, using these structures.

       For each object (data structure), a set of functions has been defined in order to add, delete  or  access
       it.  These  functions  are  defined  in  a low-level library libPat106.a. Some other functions are higher
       level. They are defined in a high-level library libPhl106.a. There  are  also  some  parsers-drivers.   A
       parser reads a pattern description file in a given format and build up a complete PAT data base. A driver
       creates  a  text  file in a given format from a PAT data base. A pat format parser-driver is available in
       the libPpt106.a library.

       Pattern description envolves the following notions (for further details see pat(5)):

       input               port controlled by the user

       output              signal or port observed by the user

       initialization      forcing the value of a register

       pattern sequence    list of values to be forced on  inputs  or  to  be  checked  as  the  result  of  the
                           simulation on outputs

       The  input-output  list  is  represented  by two data structures: pagrp contains informations relative to
       actual or virtual arraies and, paiol represents a one-bit input-output. Both are  simply  chained  lists.
       However,  to make a more efficient access to paiol structures, they are organized in a table. So, a paiol
       can also be addressed using an offset.

       Another group of data structures is used to represent a pattern. paini contains values to be forced  into
       registers  before processing the pattern.  An event (a modification of value) on an input-output is given
       by a paevt structure. A third structure, papat gathers all information concerning  a  pattern  (including
       initializations - paini - and events - paevt).

       A pacom is used to represent a comment.

       Finally,  all these structures can be accessed through a unique structure, paseq, designed to represent a
       complete sequence of simulation patterns.

ORGANIZATION

       In order to use PAT, concepts on use of libraries are  needed.  And,  since  these  libraries  are  under
       development, the code is subject to change.

       To  enable  work,  a  static version of each library is always present for the user. Libraries and header
       files are suffixed by a number (the library's version). The programmer can prefer to work with an earlier
       version of a library rather than the most recent one. However, it is recommended to  adapt  softwares  to
       libraries as soon as possible in order to spotlight potential compatibility problems before old libraries
       are removed.

       A  makefile  is  necessary  for  all  PAT applications.  This is required because any soft must be easily
       recompilable, and knowing the needed libraries for a PAT based program is not an easy matter.   It  can't
       be achieved by an other way, so do use makefile.

       In  terms  of software organization, PAT is splitted into two libraries for the basic functions, a header
       file for structures and variable declarations and, up to now, one parser-driver library for pat format.

       It is to be noticed that library's version number is incremented when, at least, one  function  composing
       the library has been modified. Therefore, PAT libraries may evolve independently form each other.

       Here follows the list of the libraries and their contents.

       libPat106.a:        pat_addpaseq,  pat_addpagrp,                             pat_addpaiol,  pat_addpapat,
                           pat_addpaevt,  pat_addpaini,                             pat_addpacom,  pat_frepaini,
                           pat_frepaiol,  pat_frepacom, pat_frepapat,  pat_frepaevt, pat_crtpaiol

       libPhl106.a:        pat_debug,     pat_getcount

       libPpt106.a:        pat_lodpaseq,  pat_savpaseq, pat_drvpat,    pat_prspat

       The  libraries are organized in such a way that no cycle can appear through calls. It means that, if in a
       given library a function calls another function in another library, then none of the  functions  of  this
       one does call any function that belongs to the first library.

EXAMPLE

       In order to use PAT libraries, one needs something like this in its makefile:

              HEADER = -I/labo/include
              LIB = -L/labo/lib -lPat106 -lPhl106 -lPpt106 -lMut315

SEE ALSO

       mbk(1), pat(5)

ASIM/LIP6                                        October 1, 1997                                       LIBPAT(3)