LIBPAT(3)
πΈ LIBPAT β the PAT manual page, bestie edition π
ok so before we even get into it: this whole thing lives in the cao-vlsi reference manual family of pages, and it's literally the glow-up guide to PAT. stay with me, it's giving very "foundational data structure" energy and we're gonna slay it together. π«Ά
β¨ ORIGIN β¨
This software is part of the ALLIANCE CAD SYSTEM, which was built by the ASIM</super> team at the LIP6 laboratory of UniversitΓ© Pierre et Marie CURIE, in Paris, France. π«π· iconic.
- Web:
http://asim.lip6.fr/recherche/alliance/ - E-mail:
alliance-users@asim.lip6.fr
π NAME π
PAT β the Generic pattern data structure. yes bestie, that's the whole name. short, sweet, main character. π
π DESCRIPTION π
So PAT is a generic data structure that supports vlsi concepts. Its whole thing is that it lets you represent a sequence of simulation patterns inside one data structure. no cap.
The goal of PAT β and this is the vibe check that matters β is to define one ad hoc single data structure (an object) where every concept you manipulate in pattern description has a well known, fixed meaning. So literally any tool that needs to get at simulation patterns can be built on top of it, using these structures. it's the foundation, the base layer, the blueprint. π
For each object (data structure), there's a whole set of functions defined so you can add, delete, or access it. Here's the tea on where they live:
- The low-level ones are defined in the low-level library
libPat106.a. - Some other functions are higher level, and they live in the high-level library
libPhl106.a. - There are also some parsers-drivers. A parser reads a pattern description file in a given format and builds up a complete
PATdata base. A driver creates a text file in a given format from aPATdata base. A pat format parser-driver is available in thelibPpt106.alibrary.
Pattern description envolves the following notions β and for further details bestie you gotta 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
Now, the input-output list is represented by two data structures:
pagrpβ holds informations relative to actual or virtual arraiespaiolβ represents a one-bit input-output
Both of them are just simply chained lists. BUT β and this is the clever part β to make access to paiol structures more efficient, they're organized in a table. So a paiol can also be addressed using an offset. efficiency queen. β¨
Another whole group of data structures is used to represent a pattern:
painiβ contains values to be forced into registers before processing the patternpaev... wait no β an event (a modification of value) on an input-output is given by apaevtstructurepapatβ the third structure, which gathers all information concerning a pattern (including initializations βpainiβ and events βpaevt)
A pacom is used to represent a comment. π¬
And finally β the moment we've all been waiting for β all these structures can be accessed through a unique structure, paseq, designed to represent a complete sequence of simulation patterns. she's the final boss and the group chat admin simultaneously. π
π ORGANIZATION π
In order to use PAT, you need concepts on the use of libraries. And since these libraries are under development, the code is subject to change. (yes, bestie, it's a moving target, we deal.)
To enable work, a static version of each library is always present for the user. Libraries and header files are suffixed by a number β that number is the library's version. The programmer can prefer to work with an earlier version of a library rather than the most recent one. However β and hear me out β it's recommended to adapt softwares to libraries as soon as possible, so you can spotlight potential compatibility problems before old libraries are removed. π«Ά
Amakefileis necessary for allPATapplications. This is required because any soft must be easily recompilable, and knowing the needed libraries for aPATbased program is not an easy matter. It can't be achieved by an other way, so do use makefile. periodt.
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. no drama, they just grow separately. π±
Here follows the list of the libraries and their contents:
libPat106.a:pat_addpaseqpat_addpagrppat_addpaiolpat_addpapatpat_addpaevtpat_addpainipat_addpacompat_frepainipat_frepaiolpat_frepacompat_frepapatpat_frepaevtpat_crtpaiol
libPhl106.a:pat_debugpat_getcount
libPpt106.a:pat_lodpaseqpat_savpaseqpat_drvpatpat_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. it's giving strictly one-way traffic, and honestly? respect. π¦
π 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
copy that exactly bestie, don't get creative with the flags. π
π SEE ALSO π
mbk(1)pat(5)
go read those too, they're the supporting cast and they ate. π₯
π BUG REPORT π
This tool is under development at the ASIM department of the LIP6 laboratory.
We need your feedback to improve documentation and tools. fr fr, tell us what's broken, we're literally asking. π
and that's the whole page, bestie β written by ASIM/LIP6, dated October 1, 1997, and filed under LIBPAT(3) in the cao-vlsi reference manual. yes it's old, yes it still serves. mwah. πβ¨π¦
π¦ where this page comes from
- fedora 43: alliance-devel 5.1.1-35.20160506gitd8c05cd.fc42 Β· GPL-2.0-only
- fedora 43: alliance-devel 5.1.1-35.20160506gitd8c05cd.fc42 Β· GPL-2.0-only
- fedora 44: alliance-devel 5.1.1-35.20160506gitd8c05cd.fc42 Β· GPL-2.0-only
- fedora 44: alliance-devel 5.1.1-35.20160506gitd8c05cd.fc42 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms