Importing GENLIB sources into the new CVS tree

This commit is contained in:
Frederic Petrot 2002-03-08 14:08:11 +00:00
parent 450caea9f5
commit c14a26090b
69 changed files with 11842 additions and 0 deletions

View File

@ -0,0 +1 @@
SUBDIRS = src man1 man3

View File

@ -0,0 +1,64 @@
dnl
dnl This file is part of the Alliance CAD System
dnl Copyright (C) Laboratoire LIP6 - Département ASIM
dnl Universite Pierre et Marie Curie
dnl
dnl Home page : http://www-asim.lip6.fr/alliance/
dnl E-mail support : mailto:alliance-support@asim.lip6.fr
dnl
dnl This library is free software; you can redistribute it and/or modify it
dnl under the terms of the GNU Library General Public License as published
dnl by the Free Software Foundation; either version 2 of the License, or (at
dnl your option) any later version.
dnl
dnl Alliance VLSI CAD System is distributed in the hope that it will be
dnl useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
dnl Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License along
dnl with the GNU C Library; see the file COPYING. If not, write to the Free
dnl Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
dnl
dnl Purpose : Auto stuffing Alliance
dnl Almost ten years since I wrote this stuff, I just can't
dnl believe it
dnl Date : 01/02/2002
dnl Author : Frederic Petrot <Frederic.Petrot@lip6.fr>
dnl $Id: configure.in,v 1.1 2002/03/08 14:08:09 fred Exp $
dnl
dnl
AC_INIT(src/genlib.c)
AM_INIT_AUTOMAKE(genlib, 3.3)
AC_PROG_INSTALL
AC_PROG_CC
AC_HEADER_STDC
AC_CHECK_HEADERS(strings.h unistd.h)
AC_C_CONST
AC_TYPE_SIGNAL
AC_PROG_RANLIB
AC_CHECK_PROG(SED, sed, sed)
changequote(,)dnl
if test -z $SED ; then
echo "Cannot find sed here! Quiting, ..."
exit 1
fi
changequote([,])dnl
dnl Setting pathes as necessary, using externally set shell variables
changequote(,)dnl
INCLUDES=-I${ALLIANCE_INCLUDE}
LDFLAGS=-L${ALLIANCE_LIB}
changequote([,])dnl
AC_SUBST(INCLUDES)
AC_SUBST(LDFLAGS)
AC_OUTPUT([
Makefile
src/Makefile
man1/Makefile
man3/Makefile
])

View File

@ -0,0 +1,59 @@
man_MANS = genlib.1

View File

@ -0,0 +1,283 @@
.\" $Id: genlib.1,v 1.1 2002/03/08 14:08:09 fred Exp $
.\" @(#)Labo.l 0.0 90/22/08 UPMC; Author: Frederic Petrot
.TH GENLIB 1 "October 1, 1997" "ASIM/LIP6" "ALLIANCE USER COMMANDS"
.SH NAME
genlib \- Procedural design language based upon C.
.so man1/alc_origin.1
.SH DESCRIPTION
\fBgenlib\fP is a set of \fIC\fP functions dedicated to procedural generation
purposes.
From a user point of view, \fBgenlib\fP is a circuit's description language
that allows standard \fIC\fP programming flow control, variable use, and
specialized functions in order to handle vlsi objects.
.br
Based upon the \fIAlliance\fP \fBmbk\fP data structures, the \fBgenlib\fP
language gives the user the ability to describe both netlist and
layout views, thus allowing both standard cell and full custom approachs.
.br
.TP 20
Netlist capture :
\- it is a hierachical structural description of
a circuit in terms of connectors (I/Os), signals (nets), and instances.
.br
The function calls used to handle the netlist view are
.RS
GENLIB_DEF_LOFIG(3)
.br
GENLIB_SAVE_LOFIG(3)
.br
GENLIB_LOINS(3)
.br
GENLIB_LOCON(3)
.br
GENLIB_LOSIG(3)
.br
GENLIB_FLATTEN_LOFIG(3)
.br
Some facilities, in order to create vectors are also available :
.br
GENLIB_BUS(3)
.br
GENLIB_ELM(3)
.RE
.TP 20
Standard cell placement
The following functions allows to define a placement file for a standard cell
design.
This file can be used by the standard cell router \fBscr\fP(1).
.RS
GENLIB_DEF_PHSC(3)
.br
GENLIB_SAVE_PHSC(3)
.br
GENLIB_SC_PLACE(3)
.br
GENLIB_SC_RIGHT(3)
.br
GENLIB_SC_TOP(3)
.br
GENLIB_SC_LEFT(3)
.br
GENLIB_SC_BOTTOM(3)
.br
.RE
.TP 20
Full custom symbolic layout
Those functions are dedicated to optimized full custom procedural layout.
In order to provide some process independance, \fIAlliance\fP uses a
symbolic layout approach (fixed grid without compaction.)
.br
The symbolic objects are segments (wires), vias (contacts), connectors (I/Os),
references and instances.
For more informations, see \fBphseg\fP(1), \fBphvia\fP(1), \fBphcon\fP(1),
\fBphref\fP(1), \fBphins\fP(1), and \fBalc\fP(1).
.br
GENLIB_DEF_PHFIG(3)
.br
GENLIB_SAVE_PHFIG(3)
.br
GENLIB_DEF_AB(3)
.br
GENLIB_DEF_PHINS(3)
.br
GENLIB_PHCON(3)
.br
GENLIB_COPY_UP_CON(3)
.br
GENLIB_COPY_UP_CON_FACE(3)
.br
GENLIB_COPY_UP_ALL_CON(3)
.br
GENLIB_PHSEG(3)
.br
GENLIB_COPY_UP_SEG(3)
.br
GENLIB_THRU_H(3)
.br
GENLIB_THRU_V(3)
.br
GENLIB_THRU_CON_H(3)
.br
GENLIB_THRU_CON_V(3)
.br
GENLIB_WIRE1(3)
.br
GENLIB_WIRE2(3)
.br
GENLIB_WIRE3(3)
.br
GENLIB_PHVIA(3)
.br
GENLIB_PLACE(3)
.br
GENLIB_PLACE_RIGHT(3)
.br
GENLIB_PLACE_TOP(3)
.br
GENLIB_PLACE_LEFT(3)
.br
GENLIB_PLACE_BOTTOM(3)
.br
GENLIB_PLACE_ON(3)
.br
GENLIB_PHREF(3)
.br
GENLIB_COPY_UP_REF(3)
.br
GENLIB_COPY_UP_ALL_REF(3)
.br
GENLIB_PLACE_VIA_REF(3)
.br
GENLIB_PLACE_CON_REF(3)
.br
GENLIB_PLACE_SEG_REF(3)
.br
GENLIB_FLATTEN_PHFIG(3)
.br
GENLIB_GET_REF_X(3)
.br
GENLIB_GET_REF_Y(3)
.br
GENLIB_GET_CON_X(3)
.br
GENLIB_GET_CON_Y(3)
.br
GENLIB_HEIGHT(3)
.br
GENLIB_WIDTH(3)
.RE
.LP
In order to have information about each of these functions, use the online
documentation with \fBman\fP(1), as in ``man function-name''.
.br
.LP
It is strongly recommended to read some books
on C programming, in order to take full advantage of the C flow control
possibilities, as it may greatly reduce the size of a \fBgenlib\fP source code.
.SH ENVIRONMENT VARIABLES
.TP 20
the variables are :
.ta 25n
\fIname\fP \fIdefault value\fP
.br
MBK_IN_LO(1) al
.br
MBK_OUT_LO(1) al
.br
MBK_IN_PH(1) ap
.br
MBK_OUT_PH(1) ap
.br
MBK_CATA_LIB(1) .
.br
MBK_WORK_LIB(1) .
.br
MBK_CATAL_NAME(1) CATAL
.LP
see the corresponding manual pages for further informations.
.br
In order to compile and execute a genlib file, one has to call \fBgenlib\fP
with one argument, that is the \fBgenlib\fP source file.
The source file must have a .c extension, but the extension should not be
mentionned on the command line.
.PP
The names used in genlib, as arguments to genlib functions, should be
alphanumerical, including the underscore.
They also are not case sensitive, so \fBVDD\fP is equivalent to \fBvdd\fP.
Vectorized connectors or signal can be declareds using the \fB[n:m]\fP
construct.
.SH OPTIONS
Two options can alter the behavior of \fBgenlib\fP :
.TP 20
-v
displays everything that is to be done during the compilation and
execution process: verbose mode.
.TP
-k
keeps the executable along with the compilation Makefile after completion.
.SH EXAMPLES
\fBgenlib\fP -v amd2901
.br
Compiles and runs a \fBgenlib\fP source file called amd2901.c
.SH SEE ALSO
.BR mbk (1).
.SH DIAGNOSTICS
.RS
\fBCompilation aborted\fP
.RE
This indicates either a \fIC\fP syntaxic error, most likely, or a
misinstallation of the \fBmbk\fP package of the \fIAlliance\fP CAD system,
if the error is \fBcannot find file genlib.h\fB.
.RS
\fBLink aborted\fP
.RE
This indicates a
misinstallation of the \fBmbk\fP package of the \fIAlliance\fP CAD system,
see your system administrator for details.
.PP
Many errors may occur while executing the source file, so refer to the proper
genlib function manual for more.
All genlib functions are listed below alphabetically sorted.
.so man1/alc_bug_report.1
.so ../man3/GENLIB_BUS.3
.so ../man3/GENLIB_COPY_UP_ALL_CON.3
.so ../man3/GENLIB_COPY_UP_ALL_REF.3
.so ../man3/GENLIB_COPY_UP_CON.3
.so ../man3/GENLIB_COPY_UP_CON_FACE.3
.so ../man3/GENLIB_COPY_UP_REF.3
.so ../man3/GENLIB_COPY_UP_SEG.3
.so ../man3/GENLIB_DEF_AB.3
.so ../man3/GENLIB_DEF_LOFIG.3
.so ../man3/GENLIB_DEF_PHFIG.3
.so ../man3/GENLIB_DEF_PHINS.3
.so ../man3/GENLIB_DEF_PHSC.3
.so ../man3/GENLIB_ELM.3
.so ../man3/GENLIB_FLATTEN_ALL_LOINS.3
.so ../man3/GENLIB_FLATTEN_ALL_PHINS.3
.so ../man3/GENLIB_FLATTEN_LOFIG.3
.so ../man3/GENLIB_FLATTEN_PHFIG.3
.so ../man3/GENLIB_GET_CON_X.3
.so ../man3/GENLIB_GET_CON_Y.3
.so ../man3/GENLIB_GET_INS_X.3
.so ../man3/GENLIB_GET_INS_Y.3
.so ../man3/GENLIB_GET_REF_X.3
.so ../man3/GENLIB_GET_REF_Y.3
.so ../man3/GENLIB_HEIGHT.3
.so ../man3/GENLIB_LOAD_LOFIG.3
.so ../man3/GENLIB_LOAD_PHFIG.3
.so ../man3/GENLIB_LOCON.3
.so ../man3/GENLIB_LOINS.3
.so ../man3/GENLIB_LOINSE.3
.so ../man3/GENLIB_LOSIG.3
.so ../man3/GENLIB_LOSIGMERGE.3
.so ../man3/GENLIB_LOTRS.3
.so ../man3/GENLIB_OUTLINE.3
.so ../man3/GENLIB_PHCON.3
.so ../man3/GENLIB_PHREF.3
.so ../man3/GENLIB_PHSEG.3
.so ../man3/GENLIB_PHVIA.3
.so ../man3/GENLIB_PLACE.3
.so ../man3/GENLIB_PLACE_BOTTOM.3
.so ../man3/GENLIB_PLACE_CON_REF.3
.so ../man3/GENLIB_PLACE_LEFT.3
.so ../man3/GENLIB_PLACE_ON.3
.so ../man3/GENLIB_PLACE_RIGHT.3
.so ../man3/GENLIB_PLACE_SEG_REF.3
.so ../man3/GENLIB_PLACE_TOP.3
.so ../man3/GENLIB_PLACE_VIA_REF.3
.so ../man3/GENLIB_REVERSE_PHCON.3
.so ../man3/GENLIB_SAVE_LOFIG.3
.so ../man3/GENLIB_SAVE_PHFIG.3
.so ../man3/GENLIB_SAVE_PHSC.3
.so ../man3/GENLIB_SC_BOTTOM.3
.so ../man3/GENLIB_SC_LEFT.3
.so ../man3/GENLIB_SC_PLACE.3
.so ../man3/GENLIB_SC_RIGHT.3
.so ../man3/GENLIB_SC_TOP.3
.so ../man3/GENLIB_UNFLATTEN_LOFIG.3
.so ../man3/GENLIB_WIRE1.3
.so ../man3/GENLIB_WIRE2.3
.so ../man3/GENLIB_WIRE3.3

View File

@ -0,0 +1,81 @@
.\" $Id: GENLIB_BUS.3,v 1.1 2002/03/08 14:08:09 fred Exp $
.\" @(#)GENLIB_BUS.3 2.11 91/08/22; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_BUS
.XE \}
.TH GENLIB_BUS.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_BUS \- Creates a bus name for netlist
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
char \(**GENLIB_BUS(busname, from, to);
char \(**busname;
long from, to;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIbusname\fP
Common signal name for a bus
.TP
\fIfrom\fP
Starting index of the set of signal, \fIfrom\fP included
.TP
\fIto\fP
Ending index of the set of signal, \fIto\fP included
.SH DESCRIPTION
\fIGENLIB_BUS\fP Creates a set of names, based upon a common name, valid for the
genlib netlist
functions that manipulate the signal, and/or connector, concept.
They are:
.RS
\fBLOINS\fP(3)
.br
\fBLOCON\fP(3)
.RE
The \fIfrom, to\fP arguments give the boundaries of the bus to be created,
both of them beeing included in the set. The function allows increasing or
decreasing order busses, as one could expect.
.br
This function has a constant equivalent, it means that if the \fIfrom, to\fP
values are known at compilation time, one should better use,
for readability purposes, the "[n:m]" construct.
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
int b = 0;
int e = 12;
/\(** Create a figure to work on \(**/
GENLIB_DEF_LOFIG("mycell");
/\(** define interface \(**/
GENLIB_LOCON(GENLIB_BUS("i", b, e), INPUT, GENLIB_BUS("sig", b, e);
GENLIB_LOCON("o[2:0]", OUTPUT, "sigout[4:6]");
/\(** Place an instance \(**/
GENLIB_LOINS("model","instance", GENLIB_BUS("sig", e/2), "sigout[6]", EOL);
/\(** Save all that on disk \(**/
GENLIB_SAVE_LOFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_ELM (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,122 @@
.\" $Id: GENLIB_COPY_UP_ALL_CON.3,v 1.1 2002/03/08 14:08:09 fred Exp $
.\" @(#)GENLIB_COPY_UP_ALL_CON.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_COPY_UP_ALL_CON
.XE \}
.TH GENLIB_COPY_UP_ALL_CON.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_COPY_UP_ALL_CON \- copy all physical connectors of an instance face in the
current figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_COPY_UP_ALL_CON(face, insname, concatenate)
char face, concatenate;
char \(**insname;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIface\fP
Face of the instance
.TP
\fIinsname\fP
Name of the instance the connector belongs to
.TP
\fIconcatenate\fP
Indicates wheter or not to concatenate instance connectors names with instance
name
.SH DESCRIPTION
\fBCOPY_UP_ALL_CON\fP copies all instance connectors of the face \fIface\fP of
the placed instance called \fIinsname\fP into the current layout.
The \fIconcatenate\fP argument may take two values:
.TP 20
\fBYES\fP
then the resulting name of a connector in the current figure is the
concatenation of the \fIinsname\fP and the \fIconname\fP.
It warranties the unicity of name at the figure level, and is to be used
most of the time.
.TP
\fBNO\fP
implies a direct copy of the connector name.
The user must take care of the unicity of connector name by itself.
.br
Two behaviour are expected, depending on each of the instance connectors
location regarding the \fIabutment box\fP of the current figure.
.TP 20
Connector on the \fIabutment box\fP
The figure connector is place right over the instance connector. The single
connector is duplicated.
.TP
Connector inside the \fIabutment box\fP
The instance connector face is computed in the figure, and then, the connector
is duplicated \fIon\fP the given face, at the right coordinates for this face.
Then a wire is drawn between the instance connector and the figure connector in
the connector layer.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_COPY_UP_ALL_CON impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a connector inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"*** genlib error *** GENLIB_COPY_UP_ALL_CON impossible : connector \fIconname\fP face
\fIface\fP of instance \fIinsname\fP, \fIcurrent\fP figure doesn't exist"
.ft R
.RS
No connector matches both the \fIconname\fP and the \fIface\fP arguments.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
.
.
GENLIB_PLACE_LEFT("gaer0_f", "insN", SYMXY);
.
.
GENLIB_DEF_AB(0L, 0L, 0L, 0L);
/\(** Copy all connectors \(**/
GENLIB_COPY_UP_ALL_CON(NORTH, "insN", YES);
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_COPY_UP_CON (3),
.BR GENLIB_COPY_UP_CON_FACE (3),
.BR GENLIB_PHCON (3),
.BR GENLIB_THRU_CON_H (3),
.BR GENLIB_THRU_CON_V (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,127 @@
.\" $Id: GENLIB_COPY_UP_ALL_REF.3,v 1.1 2002/03/08 14:08:09 fred Exp $
.\" @(#)GENLIB_COPY_UP_ALL_REF.3 2.11 01/92; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_COPY_UP_ALL_REF
.XE \}
.TH GENLIB_COPY_UP_ALL_REF.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_COPY_UP_ALL_REF \- copy a several physical reference from an instance
in the current figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_COPY_UP_ALL_REF(reftype, insname, concatenate)
char \(**reftype, \(**insname;
char concatenate;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIreftype\fP
Type of the references to be duplicated
.TP
\fIinsname\fP
Name of the instance in the which the references is to be searched for
.TP
\fIconcatenate\fP
Indicates whether or not to concatenate the instance name to the references
names when copying
.SH DESCRIPTION
\fBCOPY_UP_ALL_REF\fP duplicates all the references of type \fIreftype\fP
of the instance called \fIinsname\fP into the current layout cell.
The main purpose of this function is to copy a set references in the upper
hierarchical level, so it can be used as \fIvirtual\fP connector, for
the data-path router.
See \fBdpr\fP(1) for details.
.br
The \fIreftype\fP argument can take two values:
.TP 20
\fB"ref_con"\fP
for virtual connectors
.TP
\fB"ref_ref"\fP
for any other references
.LP
See the \fIleaf cells design for generators\fP document for details on
reference types and usage.
.br
The \fIconcatenate\fP argument can take two values:
.TP 20
A\fBYES\fP
indicates that the name of the copied references is concatenated to the
instance name.
.TP
\fBNO\fP
implies a direct duplication of the reference name
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_COPY_UP_ALL_REF impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a reference inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphins : instance \fIinsname\fP does not exist"
.ft R
.RS
The instance called \fIinsname\fP does not currently belong to the figure.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_COPY_UP_ALL_REF impossible : references of type \fIreftype\fP do not exist"
.ft R
.RS
No reference of type \fIreftype\fP exist in the model of the instance
\fIinsname\fP.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
GENLIB_PLACE("z2l_y", "r1", NOSYM, 23L, 54L);
/\(** Put a reference \(**/
GENLIB_COPY_UP_ALL_REF("ref_con", "r1", NO);
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR dpr (1),
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_PHREF (3),
.BR GENLIB_COPY_UP_ALL_REF (3),
.BR GENLIB_PLACE_CON_REF (3),
.BR GENLIB_PLACE_SEG_REF (3),
.BR GENLIB_PLACE_VIA_REF (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,119 @@
.\" $Id: GENLIB_COPY_UP_CON.3,v 1.1 2002/03/08 14:08:09 fred Exp $
.\" @(#)GENLIB_COPY_UP_CON.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_COPY_UP_CON
.XE \}
.TH GENLIB_COPY_UP_CON.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_COPY_UP_CON \- copy a physical connector from an instance in the
current figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_COPY_UP_CON(index, conname, insname, newname)
long index;
char \(**insname;
char \(**conname;
char \(**newname;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIindex\fP
Connector index in the instance
.TP
\fIconname\fP
Name of the connector in the instance model
.TP
\fIinsname\fP
Name of the instance the connector belongs to
.TP
\fInewname\fP
Name to be given to the connector in the current figure
.SH DESCRIPTION
\fBCOPY_UP_CON\fP copies a instance connector into the current layout figure,
and gives to the new connector the name \fInewname\fP. The instance connector
is identified by its name, \fIconname\fP, and index, \fIindex\fP.
.br
Two behaviour are expected, depending on the instance connector location
regarding the \fIabutment box\fP of the current figure.
.TP 20
Connector on the \fIabutment box\fP
The figure connector is place right over the instance connector. The single
connector is duplicated.
.TP
Connector inside the \fIabutment box\fP
The instance connector face is computed in the figure, and then, the connector
is duplicated \fIon\fP the given face, at the right coordinates for this face.
Then a wire is drawn between the instance connector and the figure connector in
the connector layer.
.LP
If \fInewname\fP is \fBNULL\fP, then not connector is copied up, on the segment
is drawn to the side of the \fIabutment\fP box.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_COPY_UP_CON impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a connector inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"*** genlib error *** GENLIB_COPY_UP_CON impossible : connector \fIconname\fP index
\fIindex\fP of instance \fIinsname\fP, \fIcurrent\fP figure doesn't exist"
.ft R
.RS
The given connector does not exist in the current figure.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
.
.
GENLIB_PLACE_LEFT("gaer0_f", "insN", SYMXY);
.
.
GENLIB_DEF_AB(0L, 0L, 0L, 0L);
/\(** Put a connector \(**/
GENLIB_COPY_UP_CON("i0", 1, "insN", "inz0");
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_COPY_UP_ALL_CON (3),
.BR GENLIB_COPY_UP_CON_FACE (3),
.BR GENLIB_PHCON (3),
.BR GENLIB_THRU_CON_H (3),
.BR GENLIB_THRU_CON_V (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,119 @@
.\" $Id: GENLIB_COPY_UP_CON_FACE.3,v 1.1 2002/03/08 14:08:09 fred Exp $
.\" @(#)GENLIB_COPY_UP_CON_FACE.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_COPY_UP_CON_FACE
.XE \}
.TH GENLIB_COPY_UP_CON_FACE.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_COPY_UP_CON_FACE \- copy a physical connector from an instance in the
current figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_COPY_UP_CON_FACE(face, conname, insname, newname)
long index;
char \(**insname;
char \(**conname;
char \(**newname;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIface\fP
Connector face in the instance
.TP
\fIconname\fP
Name of the connector in the instance model
.TP
\fIinsname\fP
Name of the instance the connector belongs to
.TP
\fInewname\fP
Name to be given to the connector in the current figure
.SH DESCRIPTION
\fBCOPY_UP_CON_FACE\fP copies a instance connector into the current layout
figure, and gives to the new connector the name \fInewname\fP.
The \fIface\fP and \fIconname\fP arguments are not suffiscient for non
ambiguiously identify a single connector.
So, if more than one connector matches these arguments, the behaviour described
below is applied on all of them.
.br
Two behaviour are expected, depending on the instance connector location
regarding the \fIabutment box\fP of the current figure.
.TP 20
Connector on the \fIabutment box\fP
The figure connector is place right over the instance connector. The single
connector is duplicated.
.TP
Connector inside the \fIabutment box\fP
The instance connector face is computed in the figure, and then, the connector
is duplicated \fIon\fP the given face, at the right coordinates for this face.
Then a wire is drawn between the instance connector and the figure connector in
the connector layer.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_COPY_UP_CON_FACE impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a connector inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"*** genlib error *** GENLIB_COPY_UP_CON_FACE impossible : connector \fIconname\fP face
\fIface\fP of instance \fIinsname\fP, \fIcurrent\fP figure doesn't exist"
.ft R
.RS
No connector matches both the \fIconname\fP and the \fIface\fP arguments.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
.
.
GENLIB_PLACE_LEFT("gaer0_f", "insN", SYMXY);
.
.
GENLIB_DEF_AB(0L, 0L, 0L, 0L);
/\(** Put a connector \(**/
GENLIB_COPY_UP_CON_FACE("i0", 1, "insN", "inz0");
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_COPY_UP_ALL_CON (3),
.BR GENLIB_COPY_UP_CON (3),
.BR GENLIB_PHCON (3),
.BR GENLIB_THRU_CON_H (3),
.BR GENLIB_THRU_CON_V (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,110 @@
.\" $Id: GENLIB_COPY_UP_REF.3,v 1.1 2002/03/08 14:08:09 fred Exp $
.\" @(#)GENLIB_COPY_UP_REF.3 2.11 01/92; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_COPY_UP_REF
.XE \}
.TH GENLIB_COPY_UP_REF.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_COPY_UP_REF \- copy a physical reference from an instance in the current
figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_COPY_UP_REF(refname, insname, newname)
char \(**refname, \(**insname, \(**newname;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIrefname\fP
Name of the reference in the instance
.TP
\fIinsname\fP
Name of the instance in the which the reference is to be searched for
.TP
\fInewname\fP
Name to be given to the reference in the current figure
.SH DESCRIPTION
\fBCOPY_UP_REF\fP adds a reference in the current layout cell.
All the reference's attributes are copied from the first found reference
called \fIrefname\fP in the instance \fIinsname\fP.
The designer should avoid to give to several refences the same name if
he plans to use this function.
The new reference is given the name \fInewname\fP.
The main purpose of this function is to copy a reference in the upper
hierarchical level, so it can be used as \fIvirtual\fP connector, for
the data-path router.
See \fBdpr\fP(1) for details.
layout.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_COPY_UP_REF impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a reference inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphins : instance \fIinsname\fP does not exist"
.ft R
.RS
The instance called \fIinsname\fP does not currently belong to the figure.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_COPY_UP_REF impossible : reference \fIrefname\fP does not exist"
.ft R
.RS
The reference \fIrefname\fP does not exist in the model of the instance
\fIinsname\fP.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
GENLIB_PLACE("z2l_y", "r1", NOSYM, 23L, 54L);
/\(** Put a reference \(**/
GENLIB_COPY_UP_REF("mux0_s", "r1", "out_s");
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR dpr (1),
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_PHREF (3),
.BR GENLIB_COPY_UP_ALL_REF (3),
.BR GENLIB_PLACE_CON_REF (3),
.BR GENLIB_PLACE_SEG_REF (3),
.BR GENLIB_PLACE_VIA_REF (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,107 @@
.\" $Id: GENLIB_COPY_UP_SEG.3,v 1.1 2002/03/08 14:08:09 fred Exp $
.\" @(#)GENLIB_COPY_UP_SEG.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_COPY_UP_SEG
.XE \}
.TH GENLIB_COPY_UP_SEG.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_COPY_UP_SEG \- copy a physical segment from an instance in the current
figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_COPY_UP_SEG(oldname, insname, newname)
char \(**oldname, \(**insname, \(**newname;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIoldname\fP
Name of the segment in the instance
.TP
\fIinsname\fP
Name of the instance in the which the segment is to be searched for
.TP
\fInewname\fP
Name to be given to the segment in the current figure
.SH DESCRIPTION
\fBCOPY_UP_SEG\fP adds a segment in the current layout cell.
All the segment's attributes are copied from the first found segment called
\fIoldname\fP in the instance \fIinsname\fP.
The new segment is given the name \fInewname\fP. The main purpose of this
function is to rename a segment, so it can be used later, when extracting a
layout.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_COPY_UP_SEG impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a segment inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphins : instance \fIinsname\fP does not exist"
.ft R
.RS
The instance called \fIinsname\fP does not currently belong to the figure.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_COPY_UP_SEG impossible : segment \fIsegname\fP does not exist"
.ft R
.RS
The segment \fIsegname\fP does not exist in the model of the instance
\fIinsname\fP.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
GENLIB_PLACE("z2l_y", "r1", NOSYM, 23L, 54L);
/\(** Put a segment \(**/
GENLIB_COPY_UP_SEG("mux0_s", "r1", "out_s");
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_PHSEG (3),
.BR GENLIB_THRU_H (3),
.BR GENLIB_THRU_CON_H (3),
.BR GENLIB_THRU_V (3),
.BR GENLIB_THRU_CON_V (3),
.BR GENLIB_WIRE1 (3),
.BR GENLIB_WIRE2 (3),
.BR GENLIB_WIRE3 (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,84 @@
.\" $Id: GENLIB_DEF_AB.3,v 1.1 2002/03/08 14:08:09 fred Exp $
.\" @(#)GENLIB_DEF_AB.3 2.11 91/08/22; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_DEF_AB
.XE \}
.TH GENLIB_DEF_AB.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_DEF_AB \- define a new \fIabutment box\fP to the current layout cell
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_DEF_AB(dx1, dy1, dx2, dy2);
long dx1, dy1, dx2, dy2;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIdx1, dy1\fP
Values to be added to the lower left corner of the previous \fIabutment box\fP
.TP
\fIdx2, dy2\fP
Values to be added to the upper right corner of the previous \fIabutment box\fP
.SH DESCRIPTION
\fBDEF_AB\fP give a new \fIabutment box\fP to the current physical cell.
The coordinates of
the \fIabutment box\fP are the coordinates of the envelop of the \fIabutment boxes\fP of
each instance plus the delta values given as argument. The \fI(dx1, dy1)\fP
values are added to the (x1, y1) coordinates of the bottom left corner of the
\fI"standard abutment box"\fP (the envelop), and the \fI(dx2, dy2)\fP
are added to the top right ones.
You have to call this function before saving, otherwise the figure will not
have an \fIabutment box\fP. Since it's regarding the \fIabutment box\fP
of its model that an instance is placed, any futher use of this figure
will be incorrect if \fBDEF_AB\fP isn't called, or properly defined.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_DEF_AB impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to give it a size.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
/\(** Place an instance \(**/
GENLIB_PLACE("model","i1", NOSYM,0L,0L);
GENLIB_PLACE("model","i2", NOSYM,120L,40L);
GENLIB_DEF_PHINS("i1");
GENLIB_PLACE_TOP("model2", "i3", NOSYM);
/\(** define the new abutment box as the standard envelop \(**/
GENLIB_DEF_AB(0, 0, 0, 0);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_SAVE_PHFIG (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,62 @@
.\" $Id: GENLIB_DEF_LOFIG.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_DEF_LOFIG.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_DEF_LOFIG
.XE \}
.TH GENLIB_DEF_LOFIG.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_DEF_LOFIG \- open a netlist model as current figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_DEF_LOFIG(cellname)
char \(**cellname;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIcellname\fP
Name of the cell which all futher calls to genlib logical functions will work on
.SH DESCRIPTION
\fBDEF_LOFIG\fP defines the current working structural figure by it's name,
the \fIcellname\fP argument. It can be use anywhere in the \fBgenlib\fP
program, but must appear at least once at the top of it, since it also
initalize the user's preferences through environment variables.
.br
If the figure called cellname doesn't exists in memory, it is created.
If it already exists in memory, it makes it the current working figure.
\fBDEF_LOFIG\fP doesn't look on disk for the figure \fIcellname\fP,
so be careful not to overwrite an existing file while saving later on.
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_LOFIG("cell");
/\(** Place an instance \(**/
GENLIB_LOINS("model","instance", "sig1", "sig2", "sig3", "vdd", "vss", EOL);
/\(** Save all that on disk \(**/
GENLIB_SAVE_LOFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_SAVE_LOFIG (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,62 @@
.\" $Id: GENLIB_DEF_PHFIG.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_DEF_PHFIG.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_DEF_PHFIG
.XE \}
.TH GENLIB_DEF_PHFIG.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_DEF_PHFIG \- open a layout model as current figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_DEF_PHFIG(cellname)
char \(**cellname;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIcellname\fP
Name of the cell which all futher calls to genlib physical functions will work on
.SH DESCRIPTION
\fBDEF_PHFIG\fP defines the current physical working figure by it's name,
the \fIcellname\fP argument. It can be use anywhere in the \fBgenlib\fP
program, but must appear at least once at the top of it, since it also
initalize the user's preferences through environment variables.
.br
If the figure called cellname doesn't exists in memory, it is created.
If it already exists in memory, it makes it the current working figure.
\fBDEF_PHFIG\fP doesn't look on disk for the figure \fIcellname\fP,
so be careful not to overwrite an existing file while saving later on.
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("mycell");
/\(** Place an instance \(**/
GENLIB_PLACE("mymodel","firstinstance", NOSYM,0L,0L);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHSC (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,94 @@
.\" $Id: GENLIB_DEF_PHINS.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_DEF_PHINS.3 2.11 91/08/22; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_DEF_PHINS
.XE \}
.TH GENLIB_DEF_PHINS.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_DEF_PHINS \- define a new reference instance
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_DEF_PHINS(instancename);
char \(**instancename;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIinstancename\fP
Defines the instance called \fIinstancename\fP as the new "reference instance"
.SH DESCRIPTION
\fBDEF_PHINS\fP define the new "reference instance", used as starting point
in the relative placement functions of genlib. It's regarding the \fBabutment
box\fP of the instance \fIinstancename\fP that the next instance is going to be
placed, if using the appropriate functions. Notice that the more recently
placed instance becomes automaticaly the "reference instance", if
\fBDEF_PHINS\fP isn't called.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_DEF_PHINS impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to refer to an instance inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"instance instancename doesn't exist in current figure"
.ft R
.RS
The instance \fIinstancename\fP hasn't currently been placed in the figure,
so it's impossible do to any placement from it.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
/\(** Place an instance \(**/
GENLIB_PLACE("model","i1", NOSYM,0L,0L);
GENLIB_PLACE("model","i2", NOSYM,120L,40L);
GENLIB_DEF_PHINS("i1");
GENLIB_PLACE_TOP("model2", "i3", NOSYM);
GENLIB_DEF_AB(0, 0, 0, 0);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_PLACE (3),
.BR GENLIB_PLACE_TOP (3),
.BR GENLIB_PLACE_RIGHT (3),
.BR GENLIB_PLACE_LEFT (3),
.BR GENLIB_PLACE_BOTTOM (3),
.BR GENLIB_SC_PLACE (3),
.BR GENLIB_SC_TOP (3),
.BR GENLIB_SC_RIGHT (3),
.BR GENLIB_SC_LEFT (3),
.BR GENLIB_SC_BOTTOM (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,78 @@
.\" $Id: GENLIB_DEF_PHSC.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_DEF_PHSC.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_DEF_PHSC
.XE \}
.TH GENLIB_DEF_PHSC.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_DEF_PHSC \- load a netlist and open a layout model as current figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_DEF_PHSC(cellname)
char \(**cellname;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIcellname\fP
Name of the netlist figure to be looked for in memory or on disk, for
futher physical placement.
.SH DESCRIPTION
\fBDEF_PHSC\fP defines the current working figure by it's name,
the \fIcellname\fP argument, for layout and netlist operations.
It can be use anywhere in the \fBgenlib\fP
program, but must appear at least once at the top of it, since it also
initalize the user's preferences through environment variables.
.br
\fBDEF_PHSC\fP looks for the netlist figure \fIcellname\fP in memory, and if
not found, on disk. If it fails, an error occurs and the process terminates.
.br
The main issue of this function is to allow the netlist and physical
descriptions of a circuit in two separate files,
for standard cell approach. So there is
no need to recreate the netlist view each time the placement changes.
.br
If the physical figure called \fIcellname\fP doesn't exists in memory,
it is created.
If it already exists in memory, it makes it the current working figure.
\fBDEF_PHSC\fP doesn't look on disk for the figure \fIcellname\fP,
so be careful not to overwrite an existing file while saving later on.
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHSC("mycell");
/\(** Place an instance \(**/
GENLIB_SC_PLACE("instance", NOSYM,0L,0L);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHSC();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_SAVE_PHSC (3),
.BR GENLIB_SC_PLACE (3),
.BR GENLIB_SC_TOP (3),
.BR GENLIB_SC_BOTTOM (3),
.BR GENLIB_SC_LEFT (3),
.BR GENLIB_SC_RIGHT (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,75 @@
.\" $Id: GENLIB_ELM.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_ELM.3 2.11 91/08/22; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_ELM
.XE \}
.TH GENLIB_ELM.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_ELM \- Creates a single element bus name for netlist
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
char \(**GENLIB_ELM(busname, index);
char \(**busname;
long index;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIbusname\fP
Common signal name for a bus
.TP 20
\fIindex\fP
Index of the demanded signal belonging to the bus
.SH DESCRIPTION
\fIELM\fP Creates a single element bus names valid for the genlib netlist
functions that manipulate the signal, and/or connector, concept.
They are:
.RS
\fBLOINS\fP(3)
.br
\fBLOCON\fP(3)
.RE
The \fIindex\fP argument gives the index of the name to be created.
.br
This function has a constant equivalent, it means that if the \fIindex\fP
value is known at compilation time, one should better use,
for readability purposes, the "[n]" construct.
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
int b = 0;
int e = 12;
/\(** Create a figure to work on \(**/
GENLIB_DEF_LOFIG("mycell");
/\(** define interface \(**/
GENLIB_LOCON(GENLIB_BUS("i", b, e), INPUT, BUS("sig", b, e);
GENLIB_LOCON("o[2:0]", OUTPUT, "sigout[4:6]");
/\(** Place an instance \(**/
GENLIB_LOINS("model","instance", GENLIB_ELM("sig", e/2), "sigout[6]", EOL);
/\(** Save all that on disk \(**/
GENLIB_SAVE_LOFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_BUS (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,76 @@
.\" $Id: GENLIB_FLATTEN_ALL_LOINS.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_FLATTEN_ALL_LOINS.3 2.11 91/08/22; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_FLATTEN_ALL_LOINS
.XE \}
.TH GENLIB_FLATTEN_ALL_LOINS.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_FLATTEN_ALL_LOINS \- flatten all instances in the current netlist figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_FLATTEN_ALL_LOINS(concat)
char concat;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETER
.TP 20
\fIconcat\fP
Indicate whether or not to concatenate instance name to instance' objects name
.SH DESCRIPTION
\fBFLATTEN_ALL_LOINS\fP inserts the contents of all the instances of the
current figure in the current figure.
All these instances are destroyed during the process, and therefore cannot be
refered to later in the netlist description.
.br
The \fIconcat\fP parameter may take two values:
.TP
\fBYES\fP
to concatenate object name with instance names.
.TP
\fBNO\fP
to copy object names.
.LP
In most case, the \fIconcat\fP value must be \fBYES\fP, in order to warranty
the unicity of names in the figure.
It may otherwise fail, because the function would try to add in the current
figure some object with an already existing name.
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_LOFIG("mycell");
.
.
.
/\(** Place an instance \(**/
GENLIB_LOINS("model","instance", "sig1", "sig2", EOL);
/\(** flatten all figure instance \(**/
GENLIB_FLATTEN_ALL_LOINS(YES);
/\(** Save all that on disk \(**/
GENLIB_SAVE_LOFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_LOINS (3)
.BR GENLIB_FLATTEN_LOFIG (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,93 @@
.\" $Id: GENLIB_FLATTEN_ALL_PHINS.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_FLATTEN_ALL_PHINS.3 2.11 91/08/22; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_FLATTEN_ALL_PHINS
.XE \}
.TH GENLIB_FLATTEN_ALL_PHINS.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_FLATTEN_ALL_PHINS \- flatten all instances in the current layout figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_FLATTEN_ALL_PHINS(concat, catal)
char concat, catal;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETER
.TP 20
\fIconcat\fP
Indicate whether or not to concatenate instance name to instance' objects name
.TP 20
\fIconcat\fP
Indicate whether or not to look in the catalog file before flattening a cell
.SH DESCRIPTION
\fBFLATTEN_ALL_PHINS\fP inserts the contents of all the instances of the
current figure in the current figure.
All these instances are destroyed during the process, and therefore cannot be
refered to later in the layout description.
.br
The \fIconcat\fP parameter may take two values:
.TP
\fBYES\fP
to concatenate object name with instance names.
.TP
\fBNO\fP
to copy object names.
.LP
In most case, the \fIconcat\fP value must be \fBYES\fP, in order to warranty
the unicity of names in the figure.
It may otherwise fail, because the function would try to add in the current
figure some object with an already existing name.
.br
The \fIcatal\fP parameter may also take two values:
.TP
\fBYES\fP
to check the catalog file to see if the model of an instance is in it.
If the model belong to the catalog, then it is \fInot\fR flattened.
.TP
\fBNO\fP
in this case, no checks are done, and every instance is flattened.
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("mycell");
.
.
.
/\(** Place an instance \(**/
PHINS("model","instance", "sig1", "sig2", EOL);
/\(** flatten all figure instance \(**/
GENLIB_FLATTEN_ALL_PHINS(YES, YES);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_PLACE (3),
.BR GENLIB_PLACE_LEFT (3),
.BR GENLIB_PLACE_RIGHT (3),
.BR GENLIB_PLACE_TOP (3),
.BR GENLIB_PLACE_BOTTOM (3),
.BR GENLIB_PLACE_ON (3),
.BR GENLIB_FLATTEN_PHFIG (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,78 @@
.\" $Id: GENLIB_FLATTEN_LOFIG.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_FLATTEN_LOFIG.3 2.11 91/08/22; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_FLATTEN_LOFIG
.XE \}
.TH GENLIB_FLATTEN_LOFIG.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_FLATTEN_LOFIG \- flatten an instance in the current netlist figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_FLATTEN_LOFIG(insname,concat)
char \(**insname;
char concat;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIinsname\fP
Name of the instance to be flattened
.TP
\fIconcat\fP
Indicate whether or not to concatenate instance name to instance' objects name
.SH DESCRIPTION
\fBFLATTEN_LOFIG\fP inserts the contents of an instance, but its connectors,
in the current figure, and then destroys the instance.
.br
The \fIconcat\fP parameter may take two values:
.TP
\fBYES\fP
to concatenate object name with instance names.
.TP
\fBNO\fP
to copy object names.
.LP
In most case, the \fIconcat\fP value must be \fBYES\fP, in order to warranty
the unicity of names in the figure.
It may otherwise fail, because the function would try to add in the current
figure some object with an already existing name.
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_LOFIG("mycell");
.
.
.
/\(** Place an instance \(**/
GENLIB_LOINS("model","instance", "sig1", "sig2", EOL);
/\(** flatten an instance \(**/
GENLIB_FLATTEN_LOFIG("instance", YES);
/\(** Save all that on disk \(**/
GENLIB_SAVE_LOFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_UNFLATTEN_LOFIG (3).
.BR GENLIB_LOINS (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,77 @@
.\" $Id: GENLIB_FLATTEN_PHFIG.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_FLATTEN_PHFIG.3 2.11 91/08/22; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_FLATTEN_PHFIG
.XE \}
.TH GENLIB_FLATTEN_PHFIG.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_FLATTEN_PHFIG \- flatten an instance in the current layout figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_FLATTEN_PHFIG(insname,concat)
char \(**insname;
char concat;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIinsname\fP
Name of the instance to be flattened
.TP
\fIconcat\fP
Indicate whether or not to concatenate instance name to instance' objects name
.SH DESCRIPTION
\fBFLATTEN_PHFIG\fP inserts the contents of an instance, but its connectors,
in the current figure, and then destroys the instance.
.br
The \fIconcat\fP parameter may take two values:
.TP 20
\fBYES\fP
to concatenate object name with instance names.
.TP
\fBNO\fP
to copy object names.
.LP
In most case, the \fIconcat\fP value must be \fBYES\fP, in order to warranty
the unicity of names in the figure.
It may otherwise fail, because the function would try to add in the current
figure some object with an already existing name.
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("mycell");
.
.
.
/\(** Place an instance \(**/
GENLIB_PLACE("model","instance", SYM_X, 0, 0);
/\(** flatten an instance \(**/
GENLIB_FLATTEN_PHFIG("instance", YES);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_LOINS (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,110 @@
.\" $Id: GENLIB_GET_CON_X.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_GET_CON_X.3 2.11 01/92; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_GET_CON_X
.XE \}
.TH GENLIB_GET_CON_X.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_GET_CON_X \- retrieve the x coordinate of an instance connector
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
long GENLIB_GET_CON_X(insname, conname, index)
char \(**insname, \(**conname;
long index;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIinsname\fP
Name of the instance in the which the connector is to be searched for
.TP
\fIconname\fP
Name of the connector
.TP
\fIindex\fP
Connector index
.SH DESCRIPTION
\fBGET_CON_X\fP looks for
the connector, \fIconname\fP, in the instance called \fIinsname\fP.
Then it computes its absolute coordinates in the figure, and gives back the
x coordinate.
.SH RETURN VALUE
The function returns a long int beeing the x position of the connector
in the current figure
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_GET_CON_X impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a connector inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphins : instance called \fIinsname\fP does not exist"
.ft R
.RS
No instance called \fIinsname\fP exists in the current figure.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphcon : connectors \fIconname\fP, index \fIindex\fP does not exist"
.ft R
.RS
No connector called \fIconname\fP exists in the model of the instance
\fIinsname\fP.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
long x, y;
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
GENLIB_PLACE("gaci0_b", "r1", NOSYM, 23L, 54L);
/\(** Get a connector \(**/
x = GENLIB_GET_CON_X("r1", "a", 1);
.
.
GENLIB_PHVIA(x, y, CONT_VIA);
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_PHCON (3),
.BR GENLIB_PHSEG (3),
.BR GENLIB_COPY_UP_CON (3),
.BR GENLIB_COPY_UP_ALL_CON (3),
.BR GENLIB_GET_CON_Y (3),
.BR GENLIB_GET_REF_X (3),
.BR GENLIB_GET_REF_Y (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,110 @@
.\" $Id: GENLIB_GET_CON_Y.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_GET_CON_Y.3 2.11 01/92; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_GET_CON_Y
.XE \}
.TH GENLIB_GET_CON_Y.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_GET_CON_Y \- retrieve the x coordinate of an instance connector
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
long GENLIB_GET_CON_Y(insname, conname, index)
char \(**insname, \(**conname;
long index;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIinsname\fP
Name of the instance in the which the connector is to be searched for
.TP
\fIconname\fP
Name of the connector
.TP
\fIindex\fP
Connector index
.SH DESCRIPTION
\fBGET_CON_Y\fP looks for
the connector, \fIconname\fP, in the instance called \fIinsname\fP.
Then it computes its absolute coordinates in the figure, and gives back the
y coordinate.
.SH RETURN VALUE
The function returns a long int beeing the y position of the connector
in the current figure
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_GET_CON_Y impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a connector inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphins : instance called \fIinsname\fP does not exist"
.ft R
.RS
No instance called \fIinsname\fP exists in the current figure.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphcon : connectors \fIconname\fP, index \fIindex\fP does not exist"
.ft R
.RS
No connector called \fIconname\fP exists in the model of the instance
\fIinsname\fP.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
long x, y;
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
GENLIB_PLACE("gaci0_b", "r1", NOSYM, 23L, 54L);
/\(** Get a connector \(**/
y = GENLIB_GET_CON_Y("r1", "a", 1);
.
.
GENLIB_PHVIA(x, y, CONT_VIA);
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_PHCON (3),
.BR GENLIB_PHSEG (3),
.BR GENLIB_COPY_UP_CON (3),
.BR GENLIB_COPY_UP_ALL_CON (3),
.BR GENLIB_GET_CON_X (3),
.BR GENLIB_GET_REF_X (3),
.BR GENLIB_GET_REF_Y (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,94 @@
.\" $Id: GENLIB_GET_INS_X.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_GET_INS_X.3 2.11 01/92; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_GET_INS_X
.XE \}
.TH GENLIB_GET_INS_X.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_GET_INS_X \- retrieve the x coordinate of an instance
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
long GENLIB_GET_INS_X(insname)
char \(**insname;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETER
.TP 20
\fIinsname\fP
Name of the instance which x coordinate is to be given back
.SH DESCRIPTION
\fBGET_INS_X\fP looks for
the instance called \fIinsname\fP in the current figure.
Then it computes its absolute coordinates in the figure, and gives back its
x coordinate.
.SH RETURN VALUE
The function returns a long int beeing the x position of the instance
in the current figure
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_GET_INS_X impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a connector inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphins : instance called \fIinsname\fP does not exist"
.ft R
.RS
No instance called \fIinsname\fP exists in the current figure.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
long x, y;
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
GENLIB_PLACE("gaci0_b", "r1", NOSYM, 23L, 54L);
GENLIB_PLACE_TOP("gaci0_b", "r2", SYM_X);
GENLIB_PLACE_RIGHT("gaci0_b", "r3", SYM_Y);
/\(** Get a connector \(**/
x = GENLIB_GET_INS_X("r3");
y = GENLIB_GET_INS_Y("r3");
.
.
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR PHINS (3),
.BR GENLIB_GET_INS_Y (3),
.BR GENLIB_GET_CON_X (3),
.BR GENLIB_GET_CON_Y (3).
.BR GENLIB_GET_REF_X (3),
.BR GENLIB_GET_REF_Y (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,94 @@
.\" $Id: GENLIB_GET_INS_Y.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_GET_INS_Y.3 2.11 01/92; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_GET_INS_Y
.XE \}
.TH GENLIB_GET_INS_Y.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_GET_INS_Y \- retrieve the y coordinate of an instance
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
long GENLIB_GET_INS_Y(insname)
char \(**insname;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETER
.TP 20
\fIinsname\fP
Name of the instance which y coordinate is to be given back
.SH DESCRIPTION
\fBGET_INS_Y\fP looks for
the instance called \fIinsname\fP in the current figure.
Then it computes its absolute coordinates in the figure, and gives back its
y coordinate.
.SH RETURN VALUE
The function returns a long int beeing the y position of the instance
in the current figure
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_GET_INS_Y impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a connector inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphins : instance called \fIinsname\fP does not exist"
.ft R
.RS
No instance called \fIinsname\fP exists in the current figure.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
long x, y;
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
GENLIB_PLACE("gaci0_b", "r1", NOSYM, 23L, 54L);
GENLIB_PLACE_TOP("gaci0_b", "r2", SYM_Y);
GENLIB_PLACE_RIGHT("gaci0_b", "r3", SYM_Y);
/\(** Get a connector \(**/
x = GENLIB_GET_INS_X("r3");
y = GENLIB_GET_INS_Y("r3");
.
.
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR PHINS (3),
.BR GENLIB_GET_INS_X (3),
.BR GENLIB_GET_CON_X (3),
.BR GENLIB_GET_CON_Y (3).
.BR GENLIB_GET_REF_X (3),
.BR GENLIB_GET_REF_Y (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,130 @@
.\" $Id: GENLIB_GET_REF_X.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_GET_REF_X.3 2.11 01/92; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_GET_REF_X
.XE \}
.TH GENLIB_GET_REF_X.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_GET_REF_X \- retrieve the x coordinate of an instance reference
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
long GENLIB_GET_REF_X(insname, refname)
char \(**insname, \(**refname;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIinsname\fP
Name of the instance in the which the reference is to be searched for
.TP
\fIrefname\fP
Name of the reference
SH DESCRIPTION
\fBGET_REF_X\fP looks for
the reference, \fIrefname\fP, in the instance called \fIinsname\fP.
.SH RETURN VALUE
The function returns a long int beeing the x position of the reference
in the current figure
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_GET_REF_X impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a reference inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_GET_REF_X impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a reference inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_GET_REF_X impossible : no abutment box"
.ft R
.RS
The current figure does not have an \fIabutment box\fI. Use \fIDEF_AB\fP(3)
before this function.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal GENLIB_GET_REF_X : orientation is XX"
.ft R
.RS
The \fIface\fP parameter does not have a legal value, but \fIXX\fP.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphins : instance called \fIinsname\fP does not exist"
.ft R
.RS
No instance called \fIinsname\fP exists in the current figure
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphref : references called \fIrefname\fP does not exist"
.ft R
.RS
No reference called \fIrefname\fP exists in the model of the instance
\fIinsname\fP.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
GENLIB_PLACE("gaci0_b", "r1", NOSYM, 23L, 54L);
/\(** Put a reference \(**/
GENLIB_GET_REF_X("r1", "a_0", ALU2, 2, NORTH);
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_PHREF (3),
.BR GENLIB_PHSEG (3),
.BR GENLIB_COPY_UP_REF (3),
.BR GENLIB_COPY_UP_ALL_REF (3),
.BR GENLIB_GET_REF_X (3),
.BR GENLIB_GET_REF_X (3),
.BR GENLIB_GET_REF_X (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,106 @@
.\" $Id: GENLIB_GET_REF_Y.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_GET_REF_Y.3 2.11 01/92; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_GET_REF_Y
.XE \}
.TH GENLIB_GET_REF_Y.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_GET_REF_Y \- retrieve the y coordinate of an instance reference
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
long GENLIB_GET_REF_Y(insname, refname)
char \(**insname, \(**refname;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIinsname\fP
Name of the instance in the which the reference is to be searched for
.TP
\fIrefname\fP
Name of the reference
.SH DESCRIPTION
\fBGET_REF_Y\fP looks for
the reference, \fIrefname\fP, in the instance called \fIinsname\fP.
Then it computes its absolute coordinates in the figure, and gives back the
y coordinate.
.SH RETURN VALUE
The function returns a long int beeing the y position of the reference
in the current figure
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_GET_REF_Y impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a reference inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphins : instance called \fIinsname\fP does not exist"
.ft R
.RS
No instance called \fIinsname\fP exists in the current figure.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphref : references called \fIrefname\fP does not exist"
.ft R
.RS
No reference called \fIrefname\fP exists in the model of the instance
\fIinsname\fP.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
long x, y;
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
GENLIB_PLACE("gaci0_b", "r1", NOSYM, 23L, 54L);
/\(** Get a reference \(**/
y = GENLIB_GET_REF_Y("r1", "a_0");
.
.
GENLIB_PHVIA(x, y, CONT_VIA);
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_PHREF (3),
.BR GENLIB_PHSEG (3),
.BR GENLIB_COPY_UP_REF (3),
.BR GENLIB_COPY_UP_ALL_REF (3),
.BR GENLIB_GET_CON_X (3),
.BR GENLIB_GET_CON_Y (3),
.BR GENLIB_GET_REF_X (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,59 @@
.\" $Id: GENLIB_HEIGHT.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_HEIGHT.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_HEIGHT
.XE \}
.TH GENLIB_HEIGHT.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_HEIGHT \- compute the height of a model
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
long GENLIB_HEIGHT(cellname)
char \(**cellname;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIcellname\fP
Name of the cell which height is needed
.SH DESCRIPTION
\fBHEIGHT\fP looks for the figure called \fIcellname\fP on memory, and then on
disk. When found, the figure \fIabutment box\fP height is calculated, and
returned.
.SH RETURN VALUE
\fIHEIGHT\fP returns a long int beeing the cell \fIabutment box\fP height.
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
long cellHeight;
main()
{
cellHeight = GENLIB_HEIGHT("mycell");
GENLIB_DEF_PHFIG("grumf_z");
GENLIB_PLACE("na2_y","ins1", NOSYM, 3 * cellHeight, 0L);
/\(** Save all that on disk \(**/
GENLIB_DEF_AB(0L, 0L, 0L, 0L);
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_WIDTH (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,59 @@
.\" $Id: GENLIB_LOAD_LOFIG.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_LOAD_LOFIG.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_LOAD_LOFIG
.XE \}
.TH GENLIB_LOAD_LOFIG.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_LOAD_LOFIG \- loads a netlist form disk and opens it as current figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_LOAD_LOFIG(cellname)
char \(**cellname;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIcellname\fP
Name of the cell which all futher calls to genlib logical functions will
work on
.SH DESCRIPTION
\fBLOAD_LOFIG\fP loads a netlist from disk and defines it as current working
structural figure.
This overrides the working figure initialized by \fBDEF_LOFIG\fP(3), if any.
So the next call to \fBSAVE_LOFIG\fP will save the cell called \fIcellname\fP.
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Loads the figure to work on \(**/
GENLIB_LOAD_LOFIG("cell");
/\(** Add an instance in cell \(**/
GENLIB_LOINS("model","instance", "sig1", "sig2", "sig3", "vdd", "vss", EOL);
/\(** Save all that on disk \(**/
GENLIB_SAVE_LOFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_LOFIG (3).
.BR GENLIB_SAVE_LOFIG (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,59 @@
.\" $Id: GENLIB_LOAD_PHFIG.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_LOAD_PHFIG.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_LOAD_PHFIG
.XE \}
.TH GENLIB_LOAD_PHFIG.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
\fBPHAD_PHFIG\fP \- loads a layout form disk and opens it as current figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_LOAD_PHFIG(cellname)
char \(**cellname;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIcellname\fP
Name of the cell which all futher calls to genlib layout functions will
work on
.SH DESCRIPTION
\fBPHAD_PHFIG\fP loads a physical view from disk and defines it as current
working layout figure.
This overrides the working figure initialized by \fBDEF_PHFIG\fP(3), if any.
So the next call to \fBSAVE_PHFIG\fP will save the cell called \fIcellname\fP.
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Loads the figure to work on \(**/
GENLIB_LOAD_PHFIG("cell");
/\(** Add an instance in cell \(**/
GENLIB_PLACE("model","instance", NOSYM, 200, 600);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3).
.BR GENLIB_SAVE_PHFIG (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,146 @@
.\" $Id: GENLIB_LOCON.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_LOCON.3 2.11 91/08/22; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_LOCON
.XE \}
.TH GENLIB_LOCON.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_LOCON \- adds a logical connector to the current netlist figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_LOCON(connector, direction, signal);
char \(**connector, \(**signal;
char direction;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIconnector\fP
Name of the connector to be created in the current figure
.TP
\fIdirection\fP
Indicates the connector behaviour regarding signals propagation
.TP
\fIsignal\fP
Name of the signal on which the connector is linked
.SH DESCRIPTION
\fBLOCON\fP add a logical connector to the interface of the actual
working figure. This connector is logicaly linked to the signal \fIsignal\fP.
The \fIdirection\fP attribut may take the following values:
.TP
\fBIN\fP
as input.
.TP
\fBOUT\fP
as output.
.TP
\fBINOUT\fP
as input/output, like supplies or clock for example.
.TP
\fBUNKNOWN\fP
if one doesn't know what it is.
.TP
\fBTRISTATE\fP
as high impedance output.
.TP
\fBTRANSV\fP
as transciever. That means \fBTRISTATE\fP input plus output.
.SH ERROR
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_LOCON impossible : missing GENLIB_DEF_LOFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_LOFIG\fP. So it isn't
possible to add anything. you must call \fBDEF_LOFIG\fP before any other
netlist call.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_LOCON : Bad signal or connector bus name"
.ft R
.RS
A signal or connector, described under a bus form, has an illegal syntax.
.RE
.TP
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_LOCON : All LOCON should be defined befor any GENLIB_LOINS"
.ft R
.RS
A connector is added after instances. This is a methodological error.
Only move your \fBLOCON\fP before the first \fBLOINS\fP in your code.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_LOCON : different number of signals and connectors"
.ft R
.RS
A bussed form of signal and connector has been used, but the width of
the busses are not equal. This is an obvious error, check it.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"Illegal addlocon. Connector connector already exist in figure figname"
.ft R
.RS
A connector name must be unique in a given figure at a given hierachy level.
.RE
.SH DIAGNOSTICS
Due to the \fBvti\fP file format, the direction of connectors is lost if
one uses it as starting point of a netlist desciption. All the connectors
have then the \fBUNKNOWN\fP direction.
.br
Alliance and edif file format know only about \fBIN\fP, \fBOUT\fP, and
\fBUNKNOWN\fP.
Only vhdl format fully supports the whole thing.
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_LOFIG("mycell");
/\(** define interface \(**/
GENLIB_LOCON("i", INPUT, "sig1");
GENLIB_LOCON("o", OUTPUT, "sig2");
/\(** Place an instance \(**/
GENLIB_LOINS("model","instance", "sig1", "sig2", EOL);
/\(** Save all that on disk \(**/
GENLIB_SAVE_LOFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_BUS (3),
.BR GENLIB_ELM (3),
.BR GENLIB_LOSIG (3),
.BR GENLIB_LOINS (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,152 @@
.\" $Id: GENLIB_LOINS.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_LOINS.3 2.11 91/08/22; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_LOINS
.XE \}
.TH GENLIB_LOINS.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_LOINS \- add a logical instance to the current figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_LOINS(model, instance, sig1, sig2, ..., sign, EOL);
char \(**model, \(**instance;
char \(**sig1, \(**sig2, ..., \(**sign;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fImodel\fP
Name of the model to be logically instanciated
.TP
\fIinstance\fP
Name to be given to the new instance
.TP
\fIsig1, sig2, ..., sign\fP
List of signals to be linked to the implicit connector list of the instance
.SH DESCRIPTION
\fBLOINS\fP add a logical instance in the actual working figure.
\fBLOINS\fP uses environment variables to
choose the file format and the path to the file.
.br
\fBMBK_IN_LO\fP set up the input file format, the valid ones beeing :
.RS
.br
\fBhns
.br
fne
.br
al
.br
alx\fP
.RE
\fBMBK_WORK_LIB\fP set up the output file path. Any valid unix path is
ok.
\fBLOINS\fP look in memory and then, if not found, on disk for the
figure \fImodelname\fP. This is due to the need to ensure consistency
between the model and its ascociated instances.
.br
The instance is added with the name \fIinstance\fP, and each of the
signals are connected to an instance connector. The connectors are
implicitly matched from the order of the signal on the list.
This order is the one given
in the netlist file, \fBhns\fP or \fBal\fP, or in the \fIsclib\fP
documentation, for standard cell circuits.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_LOINS impossible : missing GENLIB_DEF_LOFIG"
.ft R
.br
.RS
No figure has been yet specified by a call to \fBDEF_LOFIG\fP. So it isn't
possible to add anything. you must call \fBDEF_LOFIG\fP before any other
netlist call.
.RE
.br
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_LOINS : Bad signal bus name"
.ft R
.br
.RS
A signal, described under a bus form, has an illegal syntax.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"Illegal addloins. Instance insname already exist in figure figname"
.ft R
.br
.RS
An instance name must be unique in a given figure at a given hierachy level.
.RE
.br
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"Illegal addloins. Instance model is the figure figname itself"
.ft R
.br
.RS
A figure cannot be included in itself. Be careful, the check is only
made at current hierarchy level.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
.br
"Illegal addloins. Connector number discrepancy between
figure modelname and instance insname in figure figname"
.ft R
.br
.RS
The number of connector in the model is not equal to the number of signals
describing the connectivity during the \fBLOINS\fP call.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_LOFIG("mycell");
/\(** define interface \(**/
GENLIB_LOCON("i", INPUT, "sig1");
GENLIB_LOCON("o", OUTPUT, "sig2");
/\(** Place an instance \(**/
GENLIB_LOINS("model","instance", "sig1", "sig2", EOL);
/\(** Save all that on disk \(**/
GENLIB_SAVE_LOFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_LOFIG (3),
.BR MBK_IN_LO (1),
.BR MBK_CATA_LIB (1),
.BR MBK_WORK_LIB (1).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,159 @@
.\" $Id: GENLIB_LOINSE.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_LOINSE.3 2.11 91/08/22; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_LOINSE
.XE \}
.TH GENLIB_LOINSE.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_LOINSE \- add a logical instance to the current figure, with explicit connections
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_LOINSE(model, instance, couple1, couple2, ..., couplen, EOL);
char \(**model, \(**instance;
char \(**couple1, \(**couple2, ..., \(**couplen;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fImodel\fP
Name of the model to be logically instanciated
.TP
\fIinstance\fP
Name to be given to the new instance
.TP
\fIcouple1, couple2, ..., couplen\fP
Explicit list of connections between connectors and signals.
.SH DESCRIPTION
\fBLOINSE\fP add a logical instance in the actual working figure.
\fBLOINSE\fP uses environment variables to
choose the file format and the path to the file.
.br
\fBMBK_IN_LO\fP set up the input file format, the valid ones beeing :
.RS
.br
\fBhns
.br
fne
.br
al
.br
alx\fP
.RE
\fBMBK_WORK_LIB\fP set up the output file path. Any valid unix path is
ok.
\fBLOINSE\fP look in memory and then, if not found, on disk for the
figure \fImodelname\fP. This is due to the need to ensure consistency
between the model and its ascociated instances.
.br
The instance is added with the name \fIinstance\fP, and each of the
signals are connected to an instance connector.
The connector signal link is explicit, and described in the \fBcouple\fRs
arguments.
The \fBcouple\fRs arguments are supposed to have the form:
.nf
\fBconector => signal\fP
.br
or
\fBconector[a:b] => signal[n:m]\fP
where \fIa - b\fP equals, in absolute value, \fIn - m\fR.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_LOINSE impossible : missing GENLIB_DEF_LOFIG"
.ft R
.br
.RS
No figure has been yet specified by a call to \fBDEF_LOFIG\fP. So it isn't
possible to add anything. you must call \fBDEF_LOFIG\fP before any other
netlist call.
.RE
.br
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_LOINSE : Bad signal bus name"
.ft R
.br
.RS
A signal, described under a bus form, has an illegal syntax.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"Illegal addloins. Instance insname already exist in figure figname"
.ft R
.br
.RS
An instance name must be unique in a given figure at a given hierachy level.
.RE
.br
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"Illegal addloins. Instance model is the figure figname itself"
.ft R
.br
.RS
A figure cannot be included in itself. Be careful, the check is only
made at current hierarchy level.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
.br
"Illegal addloins. Connector number discrepancy between
figure modelname and instance insname in figure figname"
.ft R
.br
.RS
The number of connector in the model is not equal to the number of signals
describing the connectivity during the \fBLOINSE\fP call.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_LOFIG("mycell");
/\(** define interface \(**/
GENLIB_LOCON("i", INPUT, "sig1");
GENLIB_LOCON("o", OUTPUT, "sig2");
/\(** Place an instance \(**/
GENLIB_LOINSE("model","instance", "con1 => sig1", "con2 => sig2", 0L);
GENLIB_LOINSE("stuff","shirt", "i[31:0] => out[32:63]", "j[2] => sig2", 0L);
/\(** Save all that on disk \(**/
GENLIB_SAVE_LOFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_LOFIG (3),
.BR GENLIB_LOINS (3),
.BR MBK_IN_LO (1),
.BR MBK_CATA_LIB (1),
.BR MBK_WORK_LIB (1).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,79 @@
.\" $Id: GENLIB_LOSIG.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_LOSIG.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_LOSIG
.XE \}
.TH GENLIB_LOSIG.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_LOSIG \- declare an internal logical signal, or a vector of internal
logical signals
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_LOSIG(name)
char \(**name;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIname\fP
Name of a signal to be declared
.SH DESCRIPTION
\fBLOSIG\fP creates the internal signal, or the set of internal signals
coresponding to a vector description, represented by \fIname\fP.
See \fBBUS(3)\fP and \fBELM(3)\fP for more details on vectors.
.br
The need for declaring signal is mostly felt when one wants to create a
consistent vector declaration, for file formats that do not allow partial or
multiple declarations, like \fIvhdl\fP.
This way, a user can create a vector and access its member the way he wants,
but still having an internal consistent form.
.TP 20
Warning
If a signal is declared with \fBLOSIG\fP, but not used, the resulting file
will have an internal node floating.
This is not an error from a genlib point of view, so the user must be aware
of it.
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_LOFIG("cell");
/\(** Define interface \(**
GENLIB_LOCON(...
/\(** declare buses \(**/
GENLIB_LOSIG("grum[23:0]");
GENLIB_LOSIG("iconection[0:7]");
/\(** Place an instance \(**/
GENLIB_LOINS("no2_y" ,"no3" ,"grum[12]" ,"a9_s" ,"new_no3_s" ,"vdd" ,"vss" ,0);
GENLIB_LOINS("no2_y" ,"no4" ,"a12_s" ,"grum[6]" ,"no4_s" ,"vdd" ,"vss" ,0);
GENLIB_LOINS("a2_y" ,"a22" ,"no3_s" ,"grum[15]" ,"a22_s" ,"vdd" ,"vss" ,0);
/\(** Save all that on disk \(**/
GENLIB_SAVE_LOFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_LOINS (3),
.BR GENLIB_LOCON (3),
.BR GENLIB_BUS (3),
.BR GENLIB_ELM (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,95 @@
.\" $Id: GENLIB_LOSIGMERGE.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_LOSIGMERGE.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_LOSIGMERGE
.XE \}
.TH GENLIB_LOSIGMERGE.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_LOSIGMERGE \- merge two logical signals
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_LOSIGMERGE(signal1, signal2)
char \(**signal1, \(**signal2;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIsignal1\fP
Name of a signal to be merged
.TP 20
\fIsignal2\fP
Name of a signal to be merged
.SH DESCRIPTION
\fBLOSIGMERGE\fP merges the two signals, \fIsignal1\fP and \fIsignal2\fP.
This function can be used anywhere in the \fBgenlib\fP program, but its
resultings actions must be known by the user.
.TP 10
1)
If \fIsignal1\fP and \fIsignal2\fP have not been used yet, then the
corresponding signal can be later accessed through any of these aliases.
.TP 10
2)
If one of \fIsignal1\fP or \fIsignal2\fP has not been used yet, then all
further reference to the not defined name will be made on the same signal than
the defined signal.
.TP 10
3)
If both signals exist, then they are merged, and both can be used for reference
to the same signal later on.
.LP
Since most of the file formats do not allow multiple name for a
single signal, the choice is made to keep for disk usage the name that appears
in the cell interface, if any.
Otherwise, the choice is randomly made by \fBLOSIGMERGE\fP.
.TP 10
Warning
This function allows the user to internally connect two external connectors.
This is \fInot\fP a valid disk representation for netlist generated by
\fBgenlib\fP.
The \fBSAVE_LOFIG\fP function will exit if encountering such a situation.
.br
In order to avoid it, either take care not to link such signals, or build
all your hierarchy in memory, make sure your block does not have such signals,
and call \fPFLATTEN_LOFIG\fP(3) just before saving.
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_LOFIG("cell");
/\(** Define interface \(**
GENLIB_LOCON(...
/\(** Place an instance \(**/
GENLIB_LOINS("no2_y" ,"no3" ,"a8_s" ,"a9_s" ,"new_no3_s" ,"vdd" ,"vss" ,0);
GENLIB_LOINS("no2_y" ,"no4" ,"a12_s" ,"a15_s" ,"no4_s" ,"vdd" ,"vss" ,0);
GENLIB_LOINS("a2_y" ,"a22" ,"no3_s" ,"no4_s" ,"a22_s" ,"vdd" ,"vss" ,0);
GENLIB_LOSIGMERGE("new_no3_s", "no3_s");
/\(** Save all that on disk \(**/
GENLIB_SAVE_LOFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_LOINS (3),
.BR GENLIB_LOCON (3),
.BR GENLIB_FLATTEN_LOFIG (3),
.BR GENLIB_SAVE_PHFIG (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,92 @@
.\" $Id: GENLIB_LOTRS.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_LOTRS.3 2.11 91/08/22; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_LOTRS
.XE \}
.TH GENLIB_LOTRS.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_LOTRS \- adds a logical transistor to the current netlist figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_LOTRS(type,width,length,grid,source,drain)
char type;
long width, length;
char \(**grid, \(**source, \(**drain;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fItype\fP
Type of the transistor to be created in the current figure
.TP
\fIwidth, length\fP
Size of the transistor
.TP
\fIgrid, source, drain\fP
Name of the signals on which the given transitor connector are to be linked
.SH DESCRIPTION
\fBLOTRS\fP add a logical transistor to the current
working figure. This transitor has each of its pin logicaly linked to the signal
adequat signal given as parameter.
The \fItype\fP attribut may take the following values:
.TP
\fBTRANSN\fP
for a N type mos transistor.
.TP
\fBTRANSP\fP
for a P type mos transistor.
.SH ERROR
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_LOTRS impossible : missing GENLIB_DEF_LOFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_LOFIG\fP. So it isn't
possible to add anything. you must call \fBDEF_LOFIG\fP before any other
netlist call.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on, an inverter \(**/
GENLIB_DEF_LOFIG("n1");
/\(** define interface \(**/
GENLIB_LOCON("i", IN, "input");
GENLIB_LOCON("f", OUT, "output");
GENLIB_LOCON("vdd", IN, "vdd");
GENLIB_LOCON("vss", IN, "vss");
/\(** Place transistors \(**/
GENLIB_LOTRS(TRANSP, 5, 4, "input", "vdd", "output");
GENLIB_LOTRS(TRANSN, 2, 4, "input", "vss", "output");
/\(** Save all that on disk \(**/
GENLIB_SAVE_LOFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_BUS (3),
.BR GENLIB_ELM (3),
.BR GENLIB_LOINS (3),
.BR GENLIB_LOCON (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,56 @@
.\" $Id: GENLIB_OUTLINE.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_OUTLINE.3 2.11 91/08/22; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_OUTLINE
.XE \}
.TH GENLIB_OUTLINE.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_OUTLINE \- build an outline from the current layout cell
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_OUTLINE();
.ft R
.fi
.so man1/alc_origin.1
.SH DESCRIPTION
\fBOUTLINE\fP build a black box from a layout.
After a call to \fBOUTLINE\fP, the figure has only its abutment box,
its connectors, references and feed through.
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
/\(** Place an instance \(**/
GENLIB_PLACE("model","i1", NOSYM,0L,0L);
GENLIB_PLACE("model","i2", NOSYM,120L,40L);
GENLIB_DEF_PHINS("i1");
GENLIB_PLACE_TOP("model2", "i3", NOSYM);
/\(** define the new abutment box as the standard envelop \(**/
GENLIB_DEF_AB(0, 0, 0, 0);
GENLIB_OUTLINE();
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,174 @@
.\" $Id: GENLIB_PHCON.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_PHCON.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_PHCON
.XE \}
.TH GENLIB_PHCON.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_PHCON \- place a physical connector in the current figure at absolute coordinates
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_PHCON(layer, width, name, orient, x, y)
char layer;
long width;
char \(**name, orient;
long x, y;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIlayer\fP
Layout layer of the connector
.TP
\fIwidth\fP
Width of the connector
.TP
\fIname\fP
Name to be given to the connector
.TP
\fIorient\fP
Face of the cell on witch the connector belongs
.TP
\fIx, y\fP
Absolute coordinates of the connector
.SH DESCRIPTION
\fBPHCON\fP adds a connector in the current layout cell, at the specified
coordinates, with the given attributs.
The \fIlayer\fP argument can take the following legal values:
.RS
.TP
\fBNWELL\fP
.TP
\fBPWELL\fP
.TP
\fBNTIE\fP
.TP
\fBPTIE\fP
.TP
\fBNDIF\fP
.TP
\fBPDIF\fP
.TP
\fBNTRANS\fP
.TP
\fBPTRANS\fP
.TP
\fBPOLY\fP
.TP
\fBALU1\fP
.TP
\fBALU2\fP
.TP
\fBALU3\fP
.TP
\fBTPOLY\fP
.TP
\fBTALU1\fP
.TP
\fBTALU2\fP
.TP
\fBTALU3\fP
.RE
.LP
The name argument is not enough of an information to non ambigiously identify
a connector.
In order to be able to do so, an \fIindex\fP is computed for each connector
that has an already existing name, following a topological order.
Each time a connector is created, the \fIindex\fP is updated, regarding the
name of the connector.
Since someone writting a tiler needs to know exactly what connector to access,
the indexation algorithm must be known by the user.
.TP 20
Connectors with a unique name:
Such connectors have the index \fB0\fP
.TP 20
Connectors with a name apearing many times:
The indexes are computed from left to right, and then from bottom to top,
starting at \fB0\fP.
If two connectors are on the same location, with the same name, then the
\fIlayer\fP decides which one is has the greater number, from lower level,
\fBNWELL\fP to upper level, \fBALU3\fP.
.LP
The \fIorient\fP paramater may take the following values:
.TP 20
\fBNORTH\fP
for a connector placed on the top of the cell.
.TP
\fBSOUTH\fP
for a connector placed on the bottom of the cell.
.TP
\fBEAST\fP
for a connector placed on the right side of the cell.
.TP
\fBWEST\fP
for a connector placed on the left side of the cell.
.TP
Remark:
Connectors placed on corners of leaf cells are given the \fBEAST\fP orientation
if on top/right or bottom/right corner, and \fBWEST\fP if top/left or
bottom/left.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PHCON impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a connector inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal addphcon : orientation is XX in \fIname\fP"
.ft R
.RS
The \fIorient\fP parameter does not have a legal value, but \fIXX\fP.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
.
.
.
GENLIB_DEF_AB(0L, 0L, 0L, 0L);
/\(** Put a connector \(**/
GENLIB_PHCON(ALU1, 1, "cin", SOUTH, 12L, 0L);
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_COPY_UP_ALL_CON (3),
.BR GENLIB_COPY_UP_CON (3),
.BR GENLIB_COPY_UP_CON_FACE (3),
.BR GENLIB_THRU_CON_H (3),
.BR GENLIB_THRU_CON_V (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,96 @@
.\" $Id: GENLIB_PHREF.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_PHREF.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_PHREF
.XE \}
.TH GENLIB_PHREF.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_PHREF \- place a physical reference in the current figure at absolute
coordinates
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_PHREF(type, name, x, y)
char \(**type, \(**name;
long x, y;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fItype\fP
Type of the reference to be added
.TP
\fIname\fP
Name of the reference
.TP
\fIx, y\fP
Absolute coordinates of the reference
.SH DESCRIPTION
\fBPHREF\fP adds a reference in the current layout cell, at the specified
coordinates.
A reference is an object that allows to symbolicaly name a point for
futur use by the designer.
They have been mainly used in the past to \fIprogram\fP decoders, in order
to obtain many cells from a unique cell.
.LP
The \fItype\fP argument may take the two following legal values:
.TP 20
\fBref_con\fP
for virtual connectors, see \fBdpr\fP(1) for details.
.TP
\fBref_ref\fP
for any other need from the designer.
.LP
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PHREF impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a reference inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
.
/\(** Put a reference \(**/
GENLIB_PHREF("ref_con", "in_a[0]", 102L, 10L);
.
.
GENLIB_DEF_AB(0L, 0L, 0L, 0L);
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_PLACE_CON_REF (3),
.BR GENLIB_PLACE_SEG_REF (3),
.BR GENLIB_PLACE_VIA_REF (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,137 @@
.\" $Id: GENLIB_PHSEG.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_PHSEG.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_PHSEG
.XE \}
.TH GENLIB_PHSEG.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_PHSEG \- place a physical segment in the current figure at absolute coordinates
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_PHSEG(layer, width, name, x1, y1, x2, y2)
char layer;
long width;
char \(**name;
long x1, y1, x2, y2;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIlayer\fP
Layout layer of the segment
.TP
\fIwidth\fP
Width of the segment
.TP
\fIname\fP
Name to be given to the segment
.TP
\fIx1, y1, x2, y2\fP
Coordinates of the segment's end points in the current figure
.SH DESCRIPTION
\fBPHSEG\fP adds a segment in the current layout cell, at the specified
coordinates, with the given attributs.
The \fIlayer\fP argument can take the following legal values :
.RS
.TP
\fBNWELL\fP
.TP
\fBPWELL\fP
.TP
\fBNTIE\fP
.TP
\fBPTIE\fP
.TP
\fBNDIF\fP
.TP
\fBPDIF\fP
.TP
\fBNTRANS\fP
.TP
\fBPTRANS\fP
.TP
\fBPOLY\fP
.TP
\fBALU1\fP
.TP
\fBALU2\fP
.TP
\fBALU3\fP
.TP
\fBTPOLY\fP
.TP
\fBTALU1\fP
.TP
\fBTALU2\fP
.TP
\fBTALU3\fP
.RE
.LP
The name argument needs not to be specified, since one usually doesn't need to
give a segment a name. To do so, just type "" as name.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PHSEG impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place an instance inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal addphseg : x1, y1, x2, y2"
.ft R
.RS
A symbolic segment must be either vertical or horizontal, so either
\fIx1 = x2\fP, or \fIy1 = y2\fP.
.RE
.br
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
/\(** Put a segment \(**/
GENLIB_PHSEG(ALU1, 1, "", 0L, 0L, 12L, 0L);
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_COPY_UP_SEG (3),
.BR GENLIB_THRU_H (3),
.BR GENLIB_THRU_CON_H (3),
.BR GENLIB_THRU_V (3),
.BR GENLIB_THRU_CON_V (3),
.BR GENLIB_WIRE1 (3),
.BR GENLIB_WIRE2 (3),
.BR GENLIB_WIRE3 (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,114 @@
.\" $Id: GENLIB_PHVIA.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_PHVIA.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_PHVIA
.XE \}
.TH GENLIB_PHVIA.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_PHVIA \- place a physical via in the current figure at absolute coordinates
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_PHVIA(type, x, y)
char type;
long x, y;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fItype\fP
Type of the contact to be made
.TP
\fIx, y\fP
Absolute coordinates of the via
.SH DESCRIPTION
\fBPHVIA\fP adds a via in the current layout cell, at the specified
coordinates.
The \fItype\fP argument may take the following legal values:
.TP 20
\fBCONT_POLY\fP
links \fBPOLY\fP and \fBALU1\fP
.TP
\fBCONT_DIF_N\fP
links \fBNDIF\fP and \fBALU1\fP
.TP
\fBCONT_DIF_P\fP
links \fBPDIF\fP and \fBALU1\fP
.TP
\fBCONT_BODY_N\fP
links \fBNTIE\fP and \fBALU1\fP
.TP
\fBCONT_BODY_P\fP
links \fBPTIE\fP and \fBALU1\fP
.TP
\fBCONT_VIA\fP
links \fBALU1\fP and \fBALU2\fP
.TP
\fBCONT_VIA2\fP
links \fBALU2\fP and \fBALU3\fP
.TP
\fBC_X_N\fP
corner for L-shaped (and S-shaped) N transistor
.TP
\fBC_X_P\fP
corner for L-shaped (and S-shaped) P transistor
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PHVIA impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a via inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal addphvia : type is XX at \fIx, y\fP"
.ft R
.RS
The \fItype\fP parameter does not have a legal value, but \fIXX\fP.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
.
/\(** Put a via \(**/
GENLIB_PHVIA(CONT_VIA, 12L, 10L);
.
.
GENLIB_DEF_AB(0L, 0L, 0L, 0L);
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_PLACE_VIA_REF (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,137 @@
.\" $Id: GENLIB_PLACE.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_PLACE.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_PLACE
.XE \}
.TH GENLIB_PLACE.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_PLACE \- place a physical instance in the current figure at absolute coordinates
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_PLACE(modelname, insname, symetry, x, y)
char \(**modelname, \(**insname;
char symetry;
long x,y;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fImodelname\fP
Name of the layout figure to be instanciated
.TP
\fIinsname\fP
Name to be given to the instance on the model
.TP
\fIsymetry\fP
Geometrical operation to be performed on the instance before beeing placed
.TP
\fIx, y\fP
Coordinates of the lower left corner of the abutment box on the instance in
the current figure
.SH DESCRIPTION
\fBPLACE\fP add an instance in the current layout cell. The bottom left corner
of the instance of the model \fImodelname\fP is placed, after beeing
symetrized and/or rotated, at \fI(x, y)\fP coordinates.
The placed instance becomes the new "reference instance", used in
the relative placement functions.
.br
The \fIinsname\fP is the name given to the instance and must be unique at
a given hierarchy level.
.br
The \fIsymetry\fP argument can take eight legal values :
.TP 20
\fBNOSYM\fP
no geometrical operation is performed
.TP
\fBSYM_Y\fP
Y becomes -Y, that means toward X axe symetry
.TP
\fBSYM_X\fP
X becomes -X, that means toward Y axe symetry
.TP
\fBSYMXY\fP
X becomes -X, Y becomes -Y
.TP
\fBROT_P\fP
a positive 90 degrees rotation take place
.TP
\fBROT_M\fP
a negative 90 degrees rotation take place
.TP
\fBSY_RP\fP
Y becomes -Y, and then a positive 90 degrees rotation take place
.TP
\fBSY_RM\fP
Y becomes -Y, and then a negative 90 degrees rotation take place
.PP
The model of the figure to be placed must be available, on disk or in memory.
The path to the library is specified in the \fBMBK_CATA_LIB\fP (1) and
\fBMBK_WORK_LIB\fP (1) environment
variables, and its format is given by the \fBMBK_IN_PH\fP (1) environment
variable.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PLACE impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place an instance inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal addphins : transformation is x in insname"
.ft R
.RS
The \fIsymetry\fP parameter is not one of the define given, but has the
integer value \fBx\fP.
.RE
.br
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
/\(** Place two instances \(**/
GENLIB_PLACE("gapg0_b","ins1", NOSYM, 0L, 0L);
GENLIB_PLACE("gapg8_b","ins2", SYM_X, 80L, 100L);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_PLACE_TOP (3),
.BR GENLIB_PLACE_BOTTOM (3),
.BR GENLIB_PLACE_LEFT (3),
.BR GENLIB_PLACE_RIGHT (3),
.BR MBK_CATA_LIB (1),
.BR MBK_WORK_LIB (1),
.BR MBK_IN_PH (1).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,146 @@
.\" $Id: GENLIB_PLACE_BOTTOM.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_PLACE_BOTTOM.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_PLACE_BOTTOM
.XE \}
.TH GENLIB_PLACE_BOTTOM.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_PLACE_BOTTOM \- place a physical instance in the current figure under
the "reference instance"
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_PLACE_BOTTOM(modelname, insname, symetry)
char \(**modelname, \(**insname;
char symetry;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fImodelname\fP
Name of the layout figure to be instanciated
.TP
\fIinsname\fP
Name to be given to the instance on the model
.TP
\fIsymetry\fP
Geometrical operation to be performed on the instance before beeing placed
.SH DESCRIPTION
\fBPLACE_BOTTOM\fP add a instance of model \fImodelname\fP
in the current layout cell.
The bottom left corner
of the abutment box of the instance is placed, after beeing symetrized
and/or rotated,
toward the bottom left corner of the abutment box of the
"reference instance". The newly
placed instance becomes the "reference instance".
.br
The \fIinsname\fP is the name given to the instance and must be unique at
a given hierarchy level.
.br
The \fIsymetry\fP argument can take eight legal values :
.TP 20
\fBNOSYM\fP
no geometrical operation is performed
.TP
\fBSYM_Y\fP
Y becomes -Y, that means toward X axe symetry
.TP
\fBSYM_X\fP
X becomes -X, that means toward Y axe symetry
.TP
\fBSYMXY\fP
X becomes -X, Y becomes -Y
.TP
\fBROT_P\fP
a positive 90 degrees rotation take place
.TP
\fBROT_M\fP
a negative 90 degrees rotation take place
.TP
\fBSY_RP\fP
Y becomes -Y, and then a positive 90 degrees rotation take place
.TP
\fBSY_RM\fP
Y becomes -Y, and then a negative 90 degrees rotation take place
.PP
The model of the figure to be placed must be available, on disk or in memory.
The path to the library is specified in the \fBMBK_CATA_LIB\fP (1) and
\fBMBK_WORK_LIB\fP (1) environment
variables, and its format is given by the \fBMBK_IN_PH\fP (1) environment
variable.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PLACE_BOTTOM impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place an instance inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PLACE_BOTTOM impossible : No previous instance"
.ft R
.RS
There are no instances placed in the current layout cell, so it's
impossible to know where to place from. Use a \fBPLACE\fP call before.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal addphins : transformation is x in insname"
.ft R
.RS
The \fIsymetry\fP parameter is not one of the define given, but has the
integer value \fBx\fP.
.RE
.br
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHSC("cell");
/\(** Place two instances \(**/
PLACE_PLACE("grbos", "ins1", SYMXY, -3L, 0L);
GENLIB_PLACE_BOTTOM("gln", "ins2", NOSYM);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHSC();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_PLACE (3),
.BR GENLIB_PLACE_TOP (3),
.BR GENLIB_PLACE_RIGHT (3),
.BR GENLIB_PLACE_LEFT (3),
.BR MBK_CATA_LIB (1),
.BR MBK_WORK_LIB (1),
.BR MBK_IN_PH (1).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,173 @@
.\" $Id: GENLIB_PLACE_CON_REF.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_PLACE_CON_REF.3 2.11 01/92; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_PLACE_CON_REF
.XE \}
.TH GENLIB_PLACE_CON_REF.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_PLACE_CON_REF \- put a connector on top of a reference belonging an
instance in the current figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_PLACE_CON_REF(insname, refname, conname, layer, width, face)
char \(**insname, \(**refname, \(**conname;
char layer, face;
long width;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIinsname\fP
Name of the instance in the which the reference is to be searched for
.TP
\fIrefname\fP
Name of the reference to be used for the connector placement
.TP
\fIconname\fP
Name of the connector to be placed
.TP
\fIlayer\fP
Physical layer of the connector
.TP
\fIwidth\fP
Width of the connector
.TP
\fIface\fP
Face of the figure on which the connector is to be placed
.SH DESCRIPTION
\fBPLACE_CON_REF\fP places a connector called \fIconname\fP ragarding the
position of the reference, \fIrefname\fP, in the instance called \fIinsname\fP.
The connector coordinates are computed from the reference coordinates and
the face given as argument.
.br
Two behaviours are expected, regarding the reference coordinates:
.TP 20
the reference is on the given face of the \fIabutment box\fP
a connector called \fIconname\fP is added on top of the reference, with
the given \fIlayer\fP and \fIwidth\fP.
.TP
the reference is anywhere else
a connector called \fIconname\fP is added on the given face, \fIface\fP, of the
\fIabutment box\fP, at the y coordinates of the reference if the \fIface\fP
is \fBEAST\fP or \fBWEST\fP, or x one if the \fIface\fP is \fBNORTH\fP or
\fBSOUTH\fP. Then a segment is drawn between the reference and the connector.
All drawn objects are given \fIlayer\fP and \fIwidth\fP as caracteristics.
.br
The \fIface\fP argument is meant in the placed instance, and can take any of
the following values:
.TP 20
\fBNORTH\fP
for a connector placed on the top of the cell.
.TP
\fBSOUTH\fP
for a connector placed on the bottom of the cell.
.TP
\fBEAST\fP
for a connector placed on the right side of the cell.
.TP
\fBWEST\fP
for a connector placed on the left side of the cell.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PLACE_CON_REF impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a reference inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PLACE_CON_REF impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a reference inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PLACE_CON_REF impossible : no abutment box"
.ft R
.RS
The current figure does not have an \fIabutment box\fI. Use \fIDEF_AB\fP(3)
before this function.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal GENLIB_PLACE_CON_REF : orientation is XX"
.ft R
.RS
The \fIface\fP parameter does not have a legal value, but \fIXX\fP.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphins : instance called \fIinsname\fP does not exist"
.ft R
.RS
No instance called \fIinsname\fP exists in the current figure
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphref : references called \fIrefname\fP does not exist"
.ft R
.RS
No reference called \fIrefname\fP exists in the model of the instance
\fIinsname\fP.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
GENLIB_PLACE("gaci0_b", "r1", NOSYM, 23L, 54L);
/\(** Put a reference \(**/
GENLIB_PLACE_CON_REF("r1", "a_0", ALU2, 2, NORTH);
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_PHREF (3),
.BR GENLIB_PHCON (3),
.BR GENLIB_COPY_UP_REF (3),
.BR GENLIB_COPY_UP_ALL_REF (3),
.BR GENLIB_PLACE_CON_REF (3),
.BR GENLIB_PLACE_SEG_REF (3),
.BR GENLIB_PLACE_CON_REF (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,146 @@
.\" $Id: GENLIB_PLACE_LEFT.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_PLACE_LEFT.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_PLACE_LEFT
.XE \}
.TH GENLIB_PLACE_LEFT.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_PLACE_LEFT \- place a physical instance in the current figure at the left of the
"reference instance"
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_PLACE_LEFT(modelname, insname, symetry)
char \(**modelname, \(**insname;
char symetry;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fImodelname\fP
Name of the layout figure to be instanciated
.TP
\fIinsname\fP
Name to be given to the instance on the model
.TP
\fIsymetry\fP
Geometrical operation to be performed on the instance before beeing placed
.SH DESCRIPTION
\fBPLACE_LEFT\fP add an instance of model \fImodelname\fP
in the current layout cell.
The bottom right corner
of the abutment box of the instance is placed, after beeing symetrized
and/or rotated,
toward the bottom left corner of the abutment box of the
"reference instance". The newly
placed instance becomes the "reference instance".
.br
The \fIinsname\fP is the name given to the instance and must be unique at
a given hierarchy level.
.br
The \fIsymetry\fP argument can take eight legal values :
.TP 20
\fBNOSYM\fP
no geometrical operation is performed
.TP
\fBSYM_Y\fP
Y becomes -Y, that means toward X axe symetry
.TP
\fBSYM_X\fP
X becomes -X, that means toward Y axe symetry
.TP
\fBSYMXY\fP
X becomes -X, Y becomes -Y
.TP
\fBROT_P\fP
a positive 90 degrees rotation take place
.TP
\fBROT_M\fP
a negative 90 degrees rotation take place
.TP
\fBSY_RP\fP
Y becomes -Y, and then a positive 90 degrees rotation take place
.TP
\fBSY_RM\fP
Y becomes -Y, and then a negative 90 degrees rotation take place
.PP
The model of the figure to be placed must be available, on disk or in memory.
The path to the library is specified in the \fBMBK_CATA_LIB\fP (1) and
\fBMBK_WORK_LIB\fP (1) environment
variables, and its format is given by the \fBMBK_IN_PH\fP (1) environment
variable.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PLACE_LEFT impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place an instance inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PLACE_LEFT impossible : No previous instance"
.ft R
.RS
There are no instances placed in the current layout cell, so it's
impossible to know where to place from. Use a \fBPLACE\fP call before.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal addphins : transformation is x in insname"
.ft R
.RS
The \fIsymetry\fP parameter is not one of the define given, but has the
integer value \fBx\fP.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
/\(** Place two instances \(**/
GENLIB_PLACE("grbdo_3","ins1", NOSYM, 0L, 0L);
/\(** negative placement values are allowed \(**/
GENLIB_PLACE_LEFT("grxwh_k","ins2", SYMXY);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_PLACE (3),
.BR GENLIB_PLACE_TOP (3),
.BR GENLIB_PLACE_BOTTOM (3),
.BR GENLIB_PLACE_RIGHT (3),
.BR MBK_CATA_LIB (1),
.BR MBK_WORK_LIB (1),
.BR MBK_IN_PH (1).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,152 @@
.\" $Id: GENLIB_PLACE_ON.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_PLACE_ON.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_PLACE_ON
.XE \}
.TH GENLIB_PLACE_ON.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_PLACE_ON \- place a physical instance in the current figure matching
connectors
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_PLACE_ON(figname,ins1,con1,index1,symetry,ins2,con2,index2)
char \(**figname, \(**ins1, \(**con1, \(**ins2, \(**con2;
char symetry;
long index1, index2;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIfigname\fP
Name of the layout figure to be instanciated
.TP
\fIins1\fP
Name to be given to the instance in the model
.TP
\fIcon1\fP
Name of the connector of the instance to be used for placement
.TP
\fIindex1\fP
Index of the connector, or reference, \fIcon1\fP of the model to be used
for placement
.TP
\fIsymetry\fP
Geometrical operation to be performed on the instance before beeing placed
.TP
\fIins2\fP
Name of the instance to be used for relative placement
.TP
\fIcon2\fP
Name of the connector of the instance \fIins2\fP on which the placement will
take place
.TP
\fIindex2\fP
Index of the connector \fIcon2\fP of the instance to be used for relative
placement
.SH DESCRIPTION
\fBPLACE_ON\fP add an instance in the current layout cell. The bottom left corner
of the instance of the model \fImodelname\fP is placed, after beeing
symetrized and/or rotated, at \fI(x, y)\fP coordinates.
The placed instance becomes the new "reference instance", used in
the relative placement functions.
.br
The \fIinsname\fP is the name given to the instance and must be unique at
a given hierarchy level.
.br
The \fIsymetry\fP argument can take eight legal values :
.TP 20
\fBNOSYM\fP
no geometrical operation is performed
.TP
\fBSYM_Y\fP
Y becomes -Y, that means toward X axe symetry
.TP
\fBSYM_X\fP
X becomes -X, that means toward Y axe symetry
.TP
\fBSYMXY\fP
X becomes -X, Y becomes -Y
.TP
\fBROT_P\fP
a positive 90 degrees rotation take place
.TP
\fBROT_M\fP
a negative 90 degrees rotation take place
.TP
\fBSY_RP\fP
Y becomes -Y, and then a positive 90 degrees rotation take place
.TP
\fBSY_RM\fP
Y becomes -Y, and then a negative 90 degrees rotation take place
.PP
The model of the figure to be placed must be available, on disk or in memory.
The path to the library is specified in the \fBMBK_CATA_LIB\fP (1) and
\fBMBK_WORK_LIB\fP (1) environment
variables, and its format is given by the \fBMBK_IN_PH\fP (1) environment
variable.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PLACE_ON impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place an instance inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal addphins : transformation is x in insname"
.ft R
.RS
The \fIsymetry\fP parameter is not one of the define given, but has the
integer value \fBx\fP.
.RE
.br
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
/\(** Place two instances \(**/
GENLIB_PLACE_ON("gapg0_b","ins1", NOSYM, 0L, 0L);
GENLIB_PLACE_ON("gapg8_b","ins2", SYM_X, 80L, 100L);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_PLACE_TOP (3),
.BR GENLIB_PLACE_BOTTOM (3),
.BR GENLIB_PLACE_LEFT (3),
.BR GENLIB_PLACE_RIGHT (3),
.BR MBK_CATA_LIB (1),
.BR MBK_WORK_LIB (1),
.BR MBK_IN_PH (1).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,145 @@
.\" $Id: GENLIB_PLACE_RIGHT.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_PLACE_RIGHT.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_PLACE_RIGHT
.XE \}
.TH GENLIB_PLACE_RIGHT.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_PLACE_RIGHT \- place a physical instance in the current figure at
the right of the "reference instance"
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_PLACE_RIGHT(modelname, insname, symetry)
char \(**modelname, \(**insname;
char symetry;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fImodelname\fP
Name of the layout figure to be instanciated
.TP
\fIinsname\fP
Name to be given to the instance on the model
.TP
\fIsymetry\fP
Geometrical operation to be performed on the instance before beeing placed
.SH DESCRIPTION
\fBPLACE_RIGHT\fP add an instance of model \fImodelname\fP
in the current layout cell.
The bottom left corner
of the abutment box of the instance is placed, after beeing symetrized
and/or rotated,
toward the bottom right corner of the abutment box of the
"reference instance". The newly
placed instance becomes the "reference instance".
.br
The \fIinsname\fP is the name given to the instance and must be unique at
a given hierarchy level.
.br
The \fIsymetry\fP argument can take eight legal values :
.TP 20
\fBNOSYM\fP
no geometrical operation is performed
.TP
\fBSYM_Y\fP
Y becomes -Y, that means toward X axe symetry
.TP
\fBSYM_X\fP
X becomes -X, that means toward Y axe symetry
.TP
\fBSYMXY\fP
X becomes -X, Y becomes -Y
.TP
\fBROT_P\fP
a positive 90 degrees rotation take place
.TP
\fBROT_M\fP
a negative 90 degrees rotation take place
.TP
\fBSY_RP\fP
Y becomes -Y, and then a positive 90 degrees rotation take place
.TP
\fBSY_RM\fP
Y becomes -Y, and then a negative 90 degrees rotation take place
.PP
The model of the figure to be placed must be available, on disk or in memory.
The path to the library is specified in the \fBMBK_CATA_LIB\fP (1) and
\fBMBK_WORK_LIB\fP (1) environment
variables, and its format is given by the \fBMBK_IN_PH\fP (1) environment
variable.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PLACE_RIGHT impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place an instance inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PLACE_RIGHT impossible : No previous instance"
.ft R
.RS
There are no instances placed in the current layout cell, so it's
impossible to know where to place from. Use a \fBPLACE\fP call before.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal addphins : transformation is x in insname"
.ft R
.RS
The \fIsymetry\fP parameter is not one of the define given, but has the
integer value \fBx\fP.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
/\(** Place two instances \(**/
GENLIB_PLACE("rsa16","ins1", ROT_P, -5L, 5L);
GENLIB_PLACE_RIGHT("gnr32x16", "ins2", SYM_X);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_PLACE (3),
.BR GENLIB_PLACE_TOP (3),
.BR GENLIB_PLACE_BOTTOM (3),
.BR GENLIB_PLACE_LEFT (3),
.BR MBK_CATA_LIB (1),
.BR MBK_WORK_LIB (1),
.BR MBK_IN_PH (1).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,175 @@
.\" $Id: GENLIB_PLACE_SEG_REF.3,v 1.1 2002/03/08 14:08:10 fred Exp $
.\" @(#)GENLIB_PLACE_SEG_REF.3 2.11 01/92; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_PLACE_SEG_REF
.XE \}
.TH GENLIB_PLACE_SEG_REF.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_PLACE_SEG_REF \- put a segment on a reference belonging an
instance in the current figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_PLACE_SEG_REF(insname, refname, layer, width, face)
char \(**insname, \(**refname;
char layer, face;
long width;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIinsname\fP
Name of the instance in the which the reference is to be searched for
.TP
\fIrefname\fP
Name of the reference to be used for the segment placement
.TP
\fIlayer\fP
Physical layer of the segment
.TP
\fIwidth\fP
Width of the segment
.TP
\fIface\fP
Face of the figure on which the segment is to be placed
.SH DESCRIPTION
\fBPLACE_SEG_REF\fP places a segment regarding the position
of the reference, \fIrefname\fP, in the instance called \fIinsname\fP.
The segment coordinates are computed from the reference coordinates and
the face given as argument.
.br
Two behaviours are expected, regarding the reference coordinates:
.TP 20
the reference is on the given face of the \fIabutment box\fP
the segment is not added, since it would have zero as length
.TP
the reference is anywhere else
A segment is drawn between the reference and the \fIabutment box\fP, and is
given \fIlayer\fP and \fIwidth\fP as attributs.
One of its endpoint is given by the reference coordinates, the other one
comes from the \fIface\fP.
The \fIface\fP argument is meant in the placed instance, and can take any of
the following values:
.TP 20
\fBNORTH\fP
the other endpoint has, for absissa, the x coordinate of the top of the
\fIabutment box\fP of the cell, and for ordinate, the y coordinate of
the reference.
.TP
\fBSOUTH\fP
the other endpoint has, for absissa, the x coordinate of the bottom of the
\fIabutment box\fP of the cell, and for ordinate, the y coordinate of
the reference.
.TP
\fBEAST\fP
the other endpoint has, for absissa, the x coordinate of the reference and
for ordinate, the y coordinate of the right of the \fIabutment box\fP of the
cell.
.TP
\fBWEST\fP
the other endpoint has, for absissa, the x coordinate of the reference and
for ordinate, the y coordinate of the left of the \fIabutment box\fP of the
cell.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PLACE_SEG_REF impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a reference inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PLACE_SEG_REF impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a reference inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PLACE_SEG_REF impossible : no abutment box"
.ft R
.RS
The current figure does not have an \fIabutment box\fI. Use \fIDEF_AB\fP(3)
before this function.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal GENLIB_PLACE_SEG_REF : orientation is XX"
.ft R
.RS
The \fIface\fP parameter does not have a legal value, but \fIXX\fP.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphins : instance called \fIinsname\fP does not exist"
.ft R
.RS
No instance called \fIinsname\fP exists in the current figure
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphref : references called \fIrefname\fP does not exist"
.ft R
.RS
No reference called \fIrefname\fP exists in the model of the instance
\fIinsname\fP.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
GENLIB_PLACE("gaci0_b", "r1", NOSYM, 23L, 54L);
/\(** Put a reference \(**/
GENLIB_PLACE_SEG_REF("r1", "a_0", ALU2, 2, NORTH);
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_PHREF (3),
.BR GENLIB_PHSEG (3),
.BR GENLIB_COPY_UP_REF (3),
.BR GENLIB_COPY_UP_ALL_REF (3),
.BR GENLIB_PLACE_SEG_REF (3),
.BR GENLIB_PLACE_SEG_REF (3),
.BR GENLIB_PLACE_SEG_REF (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,146 @@
.\" $Id: GENLIB_PLACE_TOP.3,v 1.1 2002/03/08 14:08:11 fred Exp $
.\" @(#)GENLIB_PLACE_TOP.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_PLACE_TOP
.XE \}
.TH GENLIB_PLACE_TOP.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_PLACE_TOP \- place a physical instance in the current figure on the top of the
"reference instance"
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_PLACE_TOP(modelname, insname, symetry)
char \(**modelname, \(**insname;
char symetry;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fImodelname\fP
Name of the layout figure to be instanciated
.TP
\fIinsname\fP
Name to be given to the instance on the model
.TP
\fIsymetry\fP
Geometrical operation to be performed on the instance before beeing placed
.SH DESCRIPTION
\fBPLACE_TOP\fP add an instance of model \fImodelname\fP
in the current layout cell.
The bottom left corner
of the abutment box of the instance is placed, after beeing symetrized
and/or rotated,
toward the top left corner of the abutment box of the
"reference instance". The newly
placed instance becomes the "reference instance".
.br
The \fIinsname\fP is the name given to the instance and must be unique at
a given hierarchy level.
.br
The \fIsymetry\fP argument can take eight legal values :
.TP 20
\fBNOSYM\fP
no geometrical operation is performed
.TP
\fBSYM_Y\fP
Y becomes -Y, that means toward X axe symetry
.TP
\fBSYM_X\fP
X becomes -X, that means toward Y axe symetry
.TP
\fBSYMXY\fP
X becomes -X, Y becomes -Y
.TP
\fBROT_P\fP
a positive 90 degrees rotation take place
.TP
\fBROT_M\fP
a negative 90 degrees rotation take place
.TP
\fBSY_RP\fP
Y becomes -Y, and then a positive 90 degrees rotation take place
.TP
\fBSY_RM\fP
becomes -Y, and then a negative 90 degrees rotation take place
.PP
The model of the figure to be placed must be available, on disk or in memory.
The path to the library is specified in the \fBMBK_CATA_LIB\fP (1) and
\fBMBK_WORK_LIB\fP (1) environment
variables, and its format is given by the \fBMBK_IN_PH\fP (1) environment
variable.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PLACE_TOP impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place an instance inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PLACE_TOP impossible : No previous instance"
.ft R
.RS
There are no instances placed in the current layout cell, so it's
impossible to know where to place from. Use a \fBPLACE\fP call before.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal addphins : transformation is x in insname"
.ft R
.RS
The \fIsymetry\fP parameter is not one of the define given, but has the
integer value \fBx\fP.
.RE
.br
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
/\(** Place two instances \(**/
GENLIB_PLACE("dgl", "ins1", ROT_P, 0L, 0L);
GENLIB_PLACE_TOP("idv", "ins2", SY_RP);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_PLACE (3),
.BR GENLIB_PLACE_RIGHT (3),
.BR GENLIB_PLACE_BOTTOM (3),
.BR GENLIB_PLACE_LEFT (3),
.BR MBK_CATA_LIB (1),
.BR MBK_WORK_LIB (1),
.BR MBK_IN_PH (1).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,130 @@
.\" $Id: GENLIB_PLACE_VIA_REF.3,v 1.1 2002/03/08 14:08:11 fred Exp $
.\" @(#)GENLIB_PLACE_VIA_REF.3 2.11 01/92; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_PLACE_VIA_REF
.XE \}
.TH GENLIB_PLACE_VIA_REF.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_PLACE_VIA_REF \- put a via on top of a reference belonging to an instance
in the current figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_PLACE_VIA_REF(insname, refname, viatype)
char \(**insname, \(**refname;
char viatype;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIinsname\fP
Name of the instance in the which the reference is to be searched for
.TP
\fIrefname\fP
Name of the reference to be used as target point
.TP
\fIviatype\fP
Type of via to be placed
.SH DESCRIPTION
\fBPLACE_VIA_REF\fP places a via of type \fIviatype\fP on top of the specified
reference, \fIrefname\fP, in the instance called \fIinsname\fP.
This function may be used to generate many cells from a single one, in order
to "program" decoders for example, or in conjuction with \fBPLACE_SEG_REF\fP(3)
or \fBPLACE_CON_REF\fP(3) to translate virtual connectors into fixed ones.
.br
The \fIviatype\fP argument may take the following legal values:
.TP 20
\fBCONT_POLY\fP
links \fBPOLY\fP and \fBALU1\fP
.TP
\fBCONT_DIF_N\fP
links \fBNDIF\fP and \fBALU1\fP
.TP
\fBCONT_DIF_P\fP
links \fBPDIF\fP and \fBALU1\fP
.TP
\fBCONT_BODY_N\fP
links \fBNTIE\fP and \fBALU1\fP
.TP
\fBCONT_BODY_P\fP
links \fBPTIE\fP and \fBALU1\fP
.TP
\fBCONT_VIA\fP
links \fBALU1\fP and \fBALU2\fP
.TP
\fBCONT_VIA2\fP
links \fBALU2\fP and \fBALU3\fP
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_PLACE_VIA_REF impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place a reference inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphins : instance \fIinsname\fP does not exist"
.ft R
.RS
The instance called \fIinsname\fP does not currently belong to the figure.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphref : references called \fIrefname\fP does not exist"
.ft R
.RS
No reference called \fIrefname\fP exists in the model of the instance
\fIinsname\fP.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
GENLIB_PLACE("gaci0_b", "r1", NOSYM, 23L, 54L);
/\(** Put a reference \(**/
GENLIB_PLACE_VIA_REF("a_0", "r1", CONT_VIA);
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR dpr (1),
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_PHREF (3),
.BR GENLIB_PHVIA (3),
.BR GENLIB_COPY_UP_REF (3),
.BR GENLIB_COPY_UP_ALL_REF (3),
.BR GENLIB_PLACE_CON_REF (3),
.BR GENLIB_PLACE_SEG_REF (3),
.BR GENLIB_PLACE_VIA_REF (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,71 @@
.\" $Id: GENLIB_REVERSE_PHCON.3,v 1.1 2002/03/08 14:08:11 fred Exp $
.\" @(#)GENLIB_REVERSE_PHCON.3 2.11 93/09/03 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_REVERSE_PHCON
.XE \}
.TH GENLIB_REVERSE_PHCON.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_REVERSE_PHCON \- reverse the order of physical connectors on a bus.
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_REVERSE_PHCON(basename)
char \(**basename;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIbasename\fP
Radical of the vector to be reversed.
.SH DESCRIPTION
\fBREVERSE_PHCON\fP will change the indexes of the vector called
\fIbasename\fP, making the greatest values the smallest and so on.
Both hard connectors, created by \fBPHCON\fR(3) like functions and
virtual ones, done with \fBPHREF\fR(3), will be taken into account for
the reverse operation.
This function is mainly useful to implement the \fBmsb0\fR options of
the \fBAlliance\fR CAD system module generators, as the whole design can
be done with the designer choosen bit ordering, and modified on user
demand only before saving.
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
GENLIB_DEF_PHFIG("rom");
/\(** Create a figure to work on \(**/
.
.
.
/\(** Reverse the bit ordering if needed \(**/
if (msb0)
GENLIB_REVERSE_PHCON("adr");
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_PHCON (3),
.BR GENLIB_PHREF (3),
.BR GENLIB_COPY_UP_CON (3),
.BR GENLIB_COPY_UP_ALL_CON (3),
.BR GENLIB_COPY_UP_CON_FACE (3),
.BR GENLIB_COPY_UP_REF (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,92 @@
.\" $Id: GENLIB_SAVE_LOFIG.3,v 1.1 2002/03/08 14:08:11 fred Exp $
.\" @(#)SAVE_LOFIOG.3 2.11 01/92; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_SAVE_LOFIG
.XE \}
.TH GENLIB_SAVE_LOFIG.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_SAVE_LOFIG \- save a netlist on disk
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_SAVE_LOFIG();
.ft R
.fi
.so man1/alc_origin.1
.SH DESCRIPTION
\fBSAVE_LOFIG\fP saves the current working figure previously definded by
a \fBDEF_LOFIG\fP call. \fBSAVE_LOFIG\fP uses environment variables to
choose the file format and the path to the file.
\fBMBK_OUT_LO\fP set up the output file format, the valid ones beeing :
.RS
\fBhns
.br
fne
.br
al
.br
alx\fP
.RE
you could for example do :
.br
.RS
\fBsetenv MBK_OUT_LO al\fP
.RE
\fBMBK_WORK_LIB\fP set up the output file path. Any valid unix path is
ok.
.br
for example :
.RS
\fBsetenv MBK_WORK_LIB ~fred/booth/genlib\fP
.RE
\fBSAVE_LOFIG\fP doesn't look on disk for the figure \fIcellname\fP,
so be careful not to overwrite an existing file while saving.
.SH ERROR
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_SAVE_LOFIG impossible : missing GENLIB_DEF_LOFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_LOFIG\fP. So it isn't
possible to save anything. you must call \fBDEF_LOFIG\fP before any other
netlist call.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_LOFIG("mycell");
/\(** define interface \(**/
GENLIB_LOCON("i", INPUT, "sig1");
GENLIB_LOCON("o", OUTPUT, "sig2");
/\(** Place an instance \(**/
GENLIB_LOINS("model","instance", "sig1", "sig2", EOL);
/\(** Save all that on disk \(**/
GENLIB_SAVE_LOFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_LOFIG.3),
.BR MBK_OUT_LO (1),
.BR MBK_WORK_LIB (1).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,85 @@
.\" $Id: GENLIB_SAVE_PHFIG.3,v 1.1 2002/03/08 14:08:11 fred Exp $
.\" @(#)GENLIB_SAVE_PHFIG.3 2.11 91/08/22; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_SAVE_PHFIG
.XE \}
.TH GENLIB_SAVE_PHFIG.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_SAVE_PHFIG \- save a layout on disk
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_SAVE_PHFIG();
.ft R
.fi
.so man1/alc_origin.1
.SH DESCRIPTION
\fBSAVE_PHFIG\fP saves the current working figure previously definded by
a \fBDEF_PHFIG\fP call. \fBSAVE_PHFIG\fP uses environment variables to
choose the file format and the path to the file.
.br
\fBMBK_OUT_PH\fP set up the output file format, the valid ones beeing :
.RS
\fBcp
.br
ap\fP
.RE
you could for example do :
.RS
\fBsetenv MBK_OUT_PH ap\fP
.RE
\fBMBK_WORK_LIB\fP set up the output file path. Any valid unix path is
ok.
.br
for example :
.RS
\fBsetenv MBK_WORK_LIB ~fred/booth/genlib\fP
.RE
\fBSAVE_PHFIG\fP doesn't look on disk for the figure \fIcellname\fP,
so be careful not to overwrite an existing file while saving.
.SH ERROR
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_SAVE_PHFIG impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to save anything. you must call \fBDEF_PHFIG\fP before any other
layout action.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("mycell");
/\(** Place an instance \(**/
GENLIB_PLACE("mymodel","firstinstance", NOSYM,0L,0L);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_SAVE_PHSC (3),
.BR MBK_OUT_PH (1),
.BR MBK_WORK_LIB (1).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,72 @@
.\" $Id: GENLIB_SAVE_PHSC.3,v 1.1 2002/03/08 14:08:11 fred Exp $
.\" @(#)GENLIB_SAVE_PHSC.3 2.11 91/08/22; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_SAVE_PHSC
.XE \}
.TH GENLIB_SAVE_PHSC.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_SAVE_PHSC \- save a layout on disk
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_SAVE_PHSC();
.ft R
.fi
.so man1/alc_origin.1
.SH DESCRIPTION
\fBSAVE_PHSC\fP saves the current working figure previously definded by
a \fBDEF_PHFIG\fP or \fBDEF_PHSC\fP call, and performs a
\fBDEF_AB(0L, 0L, 0L, 0L)\fP just before saving the figure, in order to give
it the appropriate size for standard cell blocks.
\fBSAVE_PHSC\fP uses environment variables to choose the file format and
the path to the file.
.br
No check is made to see if a file with the same name already exists on disk, so
be careful not to overwrite some precious data.
.SH ERROR
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_SAVE_PHSC impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP or
\fBDEF_PHSC\fB. So it isn't
possible to save anything. you must call \fBDEF_PHFIG\fP before any other
layout action.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a physical figure to work on \(**/
GENLIB_DEF_PHSC("cell");
/\(** Place an instance \(**/
GENLIB_SC_PLACE("finst", NOSYM,0L,0L);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHSC();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHSC (3),
.BR MBK_OUT_PH (1),
.BR MBK_WORK_LIB (1).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,148 @@
.\" $Id: GENLIB_SC_BOTTOM.3,v 1.1 2002/03/08 14:08:11 fred Exp $
.\" @(#)GENLIB_SC_BOTTOM.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_SC_BOTTOM
.XE \}
.TH GENLIB_SC_BOTTOM.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_SC_BOTTOM \- place an instance in the current figure at the right of the
"reference instance"
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_SC_BOTTOM(insname, symetry)
char \(**insname;
char symetry;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIinsname\fP
Name to be given to the instance on the model
.TP
\fIsymetry\fP
Geometrical operation to be performed on the instance before beeing placed
.SH DESCRIPTION
\fBSC_BOTTOM\fP add an instance in the current cell. The bottom left corner
of the abutment box of the instance is placed, after beeing symetrized
and/or rotated,
toward the bottom left corner of the abutment box of the
"reference instance". The newly
placed instance becomes the "reference instance".
The placement takes place only if the netlist is up to day,
because the model of the instance is seeked there, in order to ensure
consistency.
.LP
The \fIsymetry\fP argument can take eight legal values :
.TP 20
\fBNOSYM\fP
no geometrical operation is performed
.TP
\fBSYM_Y\fP
Y becomes -Y, that means toward X axe symetry
.TP
\fBSYM_X\fP
X becomes -X, that means toward Y axe symetry
.TP
\fBSYMXY\fP
X becomes -X, Y becomes -Y
.TP
\fBROT_P\fP
a positive 90 degrees rotation take place
.TP
\fBROT_M\fP
a negative 90 degrees rotation take place
.TP
\fBSY_RP\fP
Y becomes -Y, and then a positive 90 degrees rotation take place
.TP
\fBSY_RM\fP
Y becomes -Y, and then a negative 90 degrees rotation take place
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_SC_BOTTOM impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place an instance inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_SC_BOTTOM impossible : missing GENLIB_DEF_LOFIG"
.ft R
.RS
The current netlist figure is not define, so \fBSC_BOTTOM\fP doesn't know
where to pick up the model. A \fBDEF_LOFIG\fP or a \fBDEF_PHSC\fP
is to be performed to avoid this error.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_SC_BOTTOM impossible : no logical instance insname"
.ft R
.RS
The instance \fIinsname\fP does not exist in the netlist representation
of the cell. It may lead us to believe that there is a consistency
problem between the two representation of this cell.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal addphins : transformation is x in insname"
.ft R
.RS
The \fIsymetry\fP parameter is not one of the define given, but has the
integer value \fBx\fP.
.RE
.br
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHSC("cell");
/\(** Place two instances \(**/
GENLIB_SC_PLACE("ins1", NOSYM, 0L, 0L);
GENLIB_SC_BOTTOM("ins2", SYMXY);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHSC();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHSC (3),
.BR GENLIB_SAVE_PHSC (3),
.BR GENLIB_SC_PLACE (3),
.BR GENLIB_SC_TOP (3),
.BR GENLIB_SC_RIGHT (3),
.BR GENLIB_SC_LEFT (3),
.BR GENLIB_DEF_PHINS (3),
.BR GENLIB_FLATTEN_PHFIG (3),
.BR GENLIB_FLATTEN_ALL_PHINS (3),
.BR GENLIB_LOINS (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,149 @@
.\" $Id: GENLIB_SC_LEFT.3,v 1.1 2002/03/08 14:08:11 fred Exp $
.\" @(#)GENLIB_SC_LEFT.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_SC_LEFT
.XE \}
.TH GENLIB_SC_LEFT.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_SC_LEFT \- place an instance in the current figure at the right of the
"reference instance"
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_SC_LEFT(insname, symetry)
char \(**insname;
char symetry;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIinsname\fP
Name to be given to the instance on the model
.TP
\fIsymetry\fP
Geometrical operation to be performed on the instance before beeing placed
.SH DESCRIPTION
\fBSC_LEFT\fP add an instance in the current cell. The bottom right corner
of the abutment box of the instance is placed, after beeing symetrized
and/or rotated,
toward the bottom left corner of the abutment box of the
"reference instance". The newly
placed instance becomes the "reference instance".
The placement takes place only if the netlist is up to day,
because the model of the instance is seeked there, in order to ensure
consistency.
.LP
The \fIsymetry\fP argument can take eight legal values :
.TP 20
\fBNOSYM\fP
no geometrical operation is performed
.TP
\fBSYM_Y\fP
Y becomes -Y, that means toward X axe symetry
.TP
\fBSYM_X\fP
X becomes -X, that means toward Y axe symetry
.TP
\fBSYMXY\fP
X becomes -X, Y becomes -Y
.TP
\fBROT_P\fP
a positive 90 degrees rotation take place
.TP
\fBROT_M\fP
a negative 90 degrees rotation take place
.TP
\fBSY_RP\fP
Y becomes -Y, and then a positive 90 degrees rotation take place
.TP
\fBSY_RM\fP
Y becomes -Y, and then a negative 90 degrees rotation take place
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_SC_LEFT impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place an instance inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_SC_LEFT impossible : missing GENLIB_DEF_LOFIG"
.ft R
.RS
The current netlist figure is not define, so \fISC_LEFT\fP doesn't know
where to pick up the model. A \fIDEF_LOFIG\fP or a \fIDEF_PHSC\fP
is to be performed to avoid this error.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_SC_LEFT impossible : no logical instance insname"
.ft R
.RS
The instance \fIinsname\fP does not exist in the netlist representation
of the cell. It may lead us to believe that there is a consistency
problem between the two representation of this cell.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal addphins : transformation is x in insname"
.ft R
.RS
The \fIsymetry\fP parameter is not one of the define given, but has the
integer value \fBx\fP.
.RE
.br
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHSC("cell");
/\(** Place two instances \(**/
GENLIB_SC_PLACE("ins1", NOSYM, 0L, 0L);
/\(** negative placement values are allowed \(**/
GENLIB_SC_LEFT("ins2", SYM_Y);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHSC();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib(1),
.BR GENLIB_DEF_PHSC.3),
.BR GENLIB_SAVE_PHSC.3),
.BR GENLIB_SC_PLACE.3),
.BR GENLIB_SC_TOP.3),
.BR GENLIB_SC_BOTTOM.3),
.BR GENLIB_SC_RIGHT.3),
.BR GENLIB_DEF_PHINS (3),
.BR GENLIB_FLATTEN_PHFIG (3),
.BR GENLIB_FLATTEN_ALL_PHINS (3),
.BR GENLIB_LOINS.3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,150 @@
.\" $Id: GENLIB_SC_PLACE.3,v 1.1 2002/03/08 14:08:11 fred Exp $
.\" @(#)GENLIB_SC_PLACE.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_SC_PLACE
.XE \}
.TH GENLIB_SC_PLACE.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_SC_PLACE \- place an instance in the current figure at absolute coordinates
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_SC_PLACE(insname, symetry, x, y)
char \(**insname;
char symetry;
long x,y;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIinsname\fP
Name to be given to the instance on the model
.TP
\fIsymetry\fP
Geometrical operation to be performed on the instance before beeing placed
.TP
\fIx, y\fP
Coordinates of the lower left corner of the abutment box of the model in
the current figure
.SH DESCRIPTION
\fISC_PLACE\fP add an instance in the current cell. The bottom left corner
of the instance is placed, after beeing symetrized and/or rotated,
at \fI(x, y)\fP
coordinates. The placement takes place only if the netlist is up to day,
because the model of the instance is seeked there, in order to ensure
consistency.
The placed instance becomes the new "reference instance", used in
the relative placement functions.
.br
The \fIsymetry\fP argument can take eight legal values :
.TP 20
\fBNOSYM\fP
no geometrical operation is performed
.TP
\fBSYM_Y\fP
Y becomes -Y, that means toward X axe symetry
.TP
\fBSYM_X\fP
X becomes -X, that means toward Y axe symetry
.TP
\fBSYMXY\fP
X becomes -X, Y becomes -Y
.TP
\fBROT_P\fP
a positive 90 degrees rotation take place
.TP
\fBROT_M\fP
a negative 90 degrees rotation take place
.TP
\fBSY_RP\fP
Y becomes -Y, and then a positive 90 degrees rotation take place
.TP
\fBSY_RM\fP
Y becomes -Y, and then a negative 90 degrees rotation take place
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_SC_PLACE impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place an instance inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_SC_PLACE impossible : missing GENLIB_DEF_LOFIG"
.ft R
.RS
The current netlist figure is not define, so \fBSC_PLACE\fP doesn't know
where to pick up the model. A \fBDEF_LOFIG\fP or a \fBDEF_PHSC\fP
is to be performed to avoid this error.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_SC_PLACE impossible : no logical instance insname"
.ft R
.RS
The instance \fIinsname\fP does not exist in the netlist representation
of the cell. It may lead us to believe that there is a consistency
problem between the two representation of this cell.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal addphins : transformation is x in insname"
.ft R
.RS
The \fIsymetry\fP parameter is not one of the define given, but has the
integer value \fBx\fP.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHSC("cell");
/\(** Place two instances \(**/
GENLIB_SC_PLACE("ins1", NOSYM, 0L, 0L);
GENLIB_SC_PLACE("ins2", NOSYM, 80L, 100L);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHSC();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHSC (3),
.BR GENLIB_SAVE_PHSC (3),
.BR GENLIB_SC_TOP (3),
.BR GENLIB_SC_BOTTOM (3),
.BR GENLIB_SC_LEFT (3),
.BR GENLIB_SC_RIGHT (3),
.BR GENLIB_DEF_PHINS (3),
.BR GENLIB_FLATTEN_PHFIG (3),
.BR GENLIB_FLATTEN_ALL_PHINS (3),
.BR GENLIB_LOINS (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,147 @@
.\" $Id: GENLIB_SC_RIGHT.3,v 1.1 2002/03/08 14:08:11 fred Exp $
.\" @(#)GENLIB_SC_RIGHT.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_SC_RIGHT
.XE \}
.TH GENLIB_SC_RIGHT.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_SC_RIGHT \- place an instance in the current figure at the right of the
"reference instance"
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_SC_RIGHT(insname, symetry)
char \(**insname;
char symetry;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIinsname\fP
Name to be given to the instance on the model
.TP
\fIsymetry\fP
Geometrical operation to be performed on the instance before beeing placed
.SH DESCRIPTION
\fBSC_RIGHT\fP add an instance in the current cell. The bottom left corner
of the abutment box of the instance is placed, after beeing symetrized
and/or rotated,
toward the bottom right corner of the abutment box of the
"reference instance". The newly
placed instance becomes the "reference instance".
The placement takes place only if the netlist is up to day,
because the model of the instance is seeked there, in order to ensure
consistency.
.LP
The \fIsymetry\fP argument can take eight legal values :
.TP 20
\fBNOSYM\fP
no geometrical operation is performed
.TP
\fBSYM_Y\fP
Y becomes -Y, that means toward X axe symetry
.TP
\fBSYM_X\fP
X becomes -X, that means toward Y axe symetry
.TP
\fBSYMXY\fP
X becomes -X, Y becomes -Y
.TP
\fBROT_P\fP
a positive 90 degrees rotation take place
.TP
\fBROT_M\fP
a negative 90 degrees rotation take place
.TP
\fBSY_RP\fP
Y becomes -Y, and then a positive 90 degrees rotation take place
.TP
\fBSY_RM\fP
Y becomes -Y, and then a negative 90 degrees rotation take place
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_SC_RIGHT impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place an instance inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_SC_RIGHT impossible : missing GENLIB_DEF_LOFIG"
.ft R
.RS
The current netlist figure is not define, so \fBSC_RIGHT\fP doesn't know
where to pick up the model. A \fBDEF_LOFIG\fP or a \fBDEF_PHSC\fP
is to be performed to avoid this error.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_SC_RIGHT impossible : no logical instance insname"
.ft R
.RS
The instance \fIinsname\fP does not exist in the netlist representation
of the cell. It may lead us to believe that there is a consistency
problem between the two representation of this cell.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal addphins : transformation is x in insname"
.ft R
.RS
The \fIsymetry\fP parameter is not one of the define given, but has the
integer value \fBx\fP.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHSC("cell");
/\(** Place two instances \(**/
GENLIB_SC_PLACE("ins1", NOSYM, 0L, 0L);
GENLIB_SC_RIGHT("ins2", SYM_X);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHSC();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib(1),
.BR GENLIB_DEF_PHSC.3),
.BR GENLIB_SAVE_PHSC.3),
.BR GENLIB_SC_PLACE.3),
.BR GENLIB_SC_TOP.3),
.BR GENLIB_SC_BOTTOM.3),
.BR GENLIB_SC_LEFT.3),
.BR GENLIB_DEF_PHINS (3),
.BR GENLIB_FLATTEN_PHFIG (3),
.BR GENLIB_FLATTEN_ALL_PHINS (3),
.BR GENLIB_LOINS.3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,148 @@
.\" $Id: GENLIB_SC_TOP.3,v 1.1 2002/03/08 14:08:11 fred Exp $
.\" @(#)GENLIB_SC_TOP.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_SC_TOP
.XE \}
.TH GENLIB_SC_TOP.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_SC_TOP \- place an instance in the current figure at the right of the
"reference instance"
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_SC_TOP(insname, symetry)
char \(**insname;
char symetry;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIinsname\fP
Name to be given to the instance on the model
.TP
\fIsymetry\fP
Geometrical operation to be performed on the instance before beeing placed
.SH DESCRIPTION
\fBSC_TOP\fP add an instance in the current cell. The bottom left corner
of the abutment box of the instance is placed, after beeing symetrized
and/or rotated,
toward the top left corner of the abutment box of the
"reference instance". The newly
placed instance becomes the "reference instance".
The placement takes place only if the netlist is up to day,
because the model of the instance is seeked there, in order to ensure
consistency.
.LP
The \fIsymetry\fP argument can take eight legal values :
.TP 20
\fBNOSYM\fP
no geometrical operation is performed
.TP
\fBSYM_Y\fP
Y becomes -Y, that means toward X axe symetry
.TP
\fBSYM_X\fP
X becomes -X, that means toward Y axe symetry
.TP
\fBSYMXY\fP
X becomes -X, Y becomes -Y
.TP
\fBROT_P\fP
a positive 90 degrees rotation take place
.TP
\fBROT_M\fP
a negative 90 degrees rotation take place
.TP
\fBSY_RP\fP
Y becomes -Y, and then a positive 90 degrees rotation take place
.TP
\fBSY_RM\fP
Y becomes -Y, and then a negative 90 degrees rotation take place
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_SC_TOP impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place an instance inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_SC_TOP impossible : missing GENLIB_DEF_LOFIG"
.ft R
.RS
The current netlist figure is not define, so \fBSC_TOP\fP doesn't know
where to pick up the model. A \fBDEF_LOFIG\fP or a \fBDEF_PHSC\fP
is to be performed to avoid this error.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_SC_TOP impossible : no logical instance insname"
.ft R
.RS
The instance \fIinsname\fP does not exist in the netlist representation
of the cell. It may lead us to believe that there is a consistency
problem between the two representation of this cell.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal addphins : transformation is x in insname"
.ft R
.RS
The \fIsymetry\fP parameter is not one of the define given, but has the
integer value \fBx\fP.
.RE
.br
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHSC("cell");
/\(** Place two instances \(**/
GENLIB_SC_PLACE("ins1", NOSYM, 0L, 0L);
GENLIB_SC_TOP("ins2", SYM_X);
/\(** Save all that on disk \(**/
GENLIB_SAVE_PHSC();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHSC (3),
.BR GENLIB_SAVE_PHSC (3),
.BR GENLIB_SC_PLACE (3),
.BR GENLIB_SC_RIGHT (3),
.BR GENLIB_SC_BOTTOM (3),
.BR GENLIB_SC_LEFT (3),
.BR GENLIB_DEF_PHINS (3),
.BR GENLIB_FLATTEN_PHFIG (3),
.BR GENLIB_FLATTEN_ALL_PHINS (3),
.BR GENLIB_LOINS (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,72 @@
.\" $Id: GENLIB_UNFLATTEN_LOFIG.3,v 1.1 2002/03/08 14:08:11 fred Exp $
.\" @(#)GENLIB_UNFLATTEN_LOFIG.3 2.11 91/08/22; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_UNFLATTEN_LOFIG
.XE \}
.TH GENLIB_UNFLATTEN_LOFIG.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
\fBUNFLATTEN_LOFIG\fP \- creates a hierarchy level from instances in the current logical figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_UNFLATTEN_LOFIG(figurename, instancename, list_of_instances, 0)
char \(**figurename;
char \(**instancename;
char \(**list_of_instances;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIfigurename\fP
Name of the figure of the new hierarchy to be created
.TP
\fIinstancename\fP
Name to be given at the instanciation of \fIfigurename\fP into the current
structual figure
.TP
\fIlist_of_instances\fP
List of strings representing the instances to be inserted into the new figure
.SH DESCRIPTION
\fBUNFLATTEN_LOFIG\fP creates a new level of hierarchy, whose model name will
be \fIfigurename\fP, and instanciate it under the name \fIinstancename\fP in
the current figure.
The instances whose name belong to the \fIlist_of_instances\fP parameters are
added in the new figure, and destroyed from the current figure.
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_LOFIG("mycell");
.
.
.
/\(** Place an instance \(**/
GENLIB_LOINS("model","instance", "sig1", "sig2", EOL);
/\(** flatten an instance \(**/
GENLIB_UNFLATTEN_LOFIG("newfig", "newins", "instance", ..., 0);
/\(** Save all that on disk \(**/
GENLIB_SAVE_LOFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_FLATTEN_LOFIG (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,175 @@
.\" $Id: GENLIB_WIRE1.3,v 1.1 2002/03/08 14:08:11 fred Exp $
.\" @(#)GENLIB_WIRE1.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_WIRE1
.XE \}
.TH GENLIB_WIRE1.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_WIRE1 \- place a physical segment in the current figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_WIRE1(layer, width, ins1, con1, index1, ins2, con2, index2)
char layer;
long width;
char \(**ins1, \(**con1, \(**ins2, \(**con2;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIlayer\fP
Layout layer of the segment
.TP
\fIwidth\fP
Width of the segment
.TP
\fIins1\fP
Name of the instance in which the connector \fIcon1\fP is to be looked for
.TP
\fIcon1\fP
Name of a connector, or reference, used as first endpoint of the wire
.TP
\fIins2\fP
Name of the instance in which the connector \fIcon2\fP is to be looked for
.TP
\fIcon2\fP
Name of a connector, or reference, used as last endpoint of the wire
.SH DESCRIPTION
\fBWIRE1\fP adds a segment made of the \fIlayer\fP level in the current
layout cell, the starting point
beeing the connector, or reference, \fIcon1\fP of the instance \fIins1\fP, and
the ending point beeing the connector, or reference, \fIcon2\fP of the instance
\fIins1\fP. The segment is drawn between the coordinates of \fIcon1\fP in
the current figure and the
coordinates of \fIcon2\fP in the current figure.
.LP
If the endpoints are connectors, the indexes \fIindex1\fP and \fIindex2\fP must
respectivly refer to \fIcon1\fP and \fIcon2\fP.
If they are references, then they are not taked care of.
One shall notice that connectors and references of a given model should not
share names if \fBWIRE1\fP is to be used.
.LP
The \fIlayer\fP argument can take the following legal values :
.RS
.TP
\fBNWELL\fP
.TP
\fBPWELL\fP
.TP
\fBNTIE\fP
.TP
\fBPTIE\fP
.TP
\fBNDIF\fP
.TP
\fBPDIF\fP
.TP
\fBNTRANS\fP
.TP
\fBPTRANS\fP
.TP
\fBPOLY\fP
.TP
\fBALU1\fP
.TP
\fBALU2\fP
.TP
\fBALU3\fP
.TP
\fBTPOLY\fP
.TP
\fBTALU1\fP
.TP
\fBTALU2\fP
.TP
\fBTALU3\fP
.RE
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_WIRE1 impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place an instance inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal addphseg : x1, y1, x2, y2"
.ft R
.RS
A symbolic segment must be either vertical or horizontal, so either
\fIx1 = x2\fP, or \fIy1 = y2\fP. Since \fBWIRE1\fP creates a segment from
relative coordinates, care must be taken to follow the previous rule.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_WIRE1 impossible : same name \fIconX\fP, for connector and reference in
\fIinsX\fP"
.ft R
.RS
The model of the instance \fIinsX\fP has both a connector and a reference
that matches the \fIconX\fP name. This is not legal since genlib doesn't know
which one to choose as point.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphins : instance \fIinsX\fP does not exist"
.ft R
.RS
The instance called \fIinsX\fP does not currently belong to the figure.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
GENLIB_PLACE("gaci0_b", "r_addin_1", NOSYM, 0, 0);
GENLIB_PLACE_RIGHT("gapgn_b", "pg", NOSYM);
GENLIB_PLACE_RIGHT("gacin_b", "r_addin_2", NOSYM);
/\(** Draw a segment \(**/
GENLIB_WIRE1(ALU1, 1, "r_addin_1", "out", 0L, "r_addin_2", "in", 1L);
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_COPY_UP_SEG (3),
.BR GENLIB_PHSEG (3),
.BR GENLIB_THRU_H (3),
.BR GENLIB_THRU_CON_H (3),
.BR GENLIB_THRU_V (3),
.BR GENLIB_THRU_CON_V (3),
.BR GENLIB_WIRE2 (3),
.BR GENLIB_WIRE3 (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,181 @@
.\" $Id: GENLIB_WIRE2.3,v 1.1 2002/03/08 14:08:11 fred Exp $
.\" @(#)GENLIB_WIRE2.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_WIRE2
.XE \}
.TH GENLIB_WIRE2.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_WIRE2 \- place two physical segments in the current figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_WIRE2(layer, width, ins1, con1, index1, ins2, con2, index2, x, y)
char layer;
long width;
char \(**ins1, \(**con1, \(**ins2, \(**con2;
long x, y;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIlayer\fP
Layout layer of the segment
.TP
\fIwidth\fP
Width of the segment
.TP
\fIins1\fP
Name of the instance in which the connector \fIcon1\fP is to be looked for
.TP
\fIcon1\fP
Name of a connector, or reference, used as first endpoint of the wire
.TP
\fIins2\fP
Name of the instance in which the connector \fIcon2\fP is to be looked for
.TP
\fIcon2\fP
Name of a connector, or reference, used as last endpoint of the wire
.TP
\fIx, y\fP
Coordinates of the segment's elbow in the current figure
.SH DESCRIPTION
\fBWIRE2\fP adds two segments made of the \fIlayer\fP level in the current
layout cell, the starting point
beeing the connector, or reference, \fIcon1\fP of the instance \fIins1\fP, and
the ending point beeing the connector, or reference, \fIcon2\fP of the instance
\fIins1\fP. The first segment is drawn between the coordinates of \fIcon1\fP in
the current figure and \fIx, y\fP, and the second one between \fIx, y\fP and the
coordinates of \fIcon2\fP in the current figure.
.LP
If the endpoints are connectors, the indexes \fIindex1\fP and \fIindex2\fP must
respectivly refer to \fIcon1\fP and \fIcon2\fP.
If they are references, then they are not taked care of.
One shall notice that connectors and references of a given model should not
share names if \fBWIRE2\fP is to be used.
.LP
The \fIlayer\fP argument can take the following legal values :
.RS
.TP
\fBNWELL\fP
.TP
\fBPWELL\fP
.TP
\fBNTIE\fP
.TP
\fBPTIE\fP
.TP
\fBNDIF\fP
.TP
\fBPDIF\fP
.TP
\fBNTRANS\fP
.TP
\fBPTRANS\fP
.TP
\fBPOLY\fP
.TP
\fBALU1\fP
.TP
\fBALU2\fP
.TP
\fBALU3\fP
.TP
\fBTPOLY\fP
.TP
\fBTALU1\fP
.TP
\fBTALU2\fP
.TP
\fBTALU3\fP
.RE
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_WIRE2 impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place an instance inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal addphseg : x1, y1, x2, y2"
.ft R
.RS
A symbolic segment must be either vertical or horizontal, so either
\fIx1 = x2\fP, or \fIy1 = y2\fP. Since \fBWIRE2\fP creates segments from
relative coordinates, care must be taken to follow the previous rule.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_WIRE2 impossible : same name \fIconX\fP, for connector and reference in
\fIinsX\fP"
.ft R
.RS
The model of the instance \fIinsX\fP has both a connector and a reference
that matches the \fIconX\fP name. This is not legal since genlib doesn't know
which one to choose as point.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphins : instance \fIinsX\fP does not exist"
.ft R
.RS
The instance called \fIinsX\fP does not currently belong to the figure.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
main()
{
/\(** Create a figure to work on \(**/
GENLIB_DEF_PHFIG("cell");
GENLIB_PLACE("gaci0_b", "r_addin_1", NOSYM, 0, 0);
GENLIB_PLACE_TOP("gacin_b", "r_addin_2", NOSYM);
GENLIB_PLACE_RIGHT("gapgn_b", "pg", NOSYM);
/\(** Draw a segment \(**/
GENLIB_WIRE2(ALU1, 1, "r_addin_1", "out", 0L, "pg", "g", 1L,
GENLIB_GET_CON_X("pg", "g", 1L),
GENLIB_GET_CON_Y("r_addin_1", "out", 0L));
/\(** Save that on disk \(**/
GENLIB_SAVE_PHFIG();
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_COPY_UP_SEG (3),
.BR GENLIB_PHSEG (3),
.BR GENLIB_THRU_H (3),
.BR GENLIB_THRU_CON_H (3),
.BR GENLIB_THRU_V (3),
.BR GENLIB_THRU_CON_V (3),
.BR GENLIB_WIRE1 (3),
.BR GENLIB_WIRE3 (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,184 @@
.\" $Id: GENLIB_WIRE3.3,v 1.1 2002/03/08 14:08:11 fred Exp $
.\" @(#)GENLIB_WIRE3.3 2.11 91/08/22 ; Labo Cao-vlsi; Author : Frederic Petrot
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_WIRE3
.XE \}
.TH GENLIB_WIRE3.3 "October 1, 1997" "ASIM/LIP6" "PROCEDURAL GENERATION LANGUAGE"
.SH NAME
GENLIB_WIRE3 \- place three physical segments in the current figure
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
void GENLIB_WIRE3(layer, width, ins1, con1, index1, ins2, con2, index2, x1, y1, x2, y2)
char layer;
long width;
char \(**ins1, \(**con1, \(**ins2, \(**con2;
long x1, y1, x2, y2;
.ft R
.fi
.so man1/alc_origin.1
.SH PARAMETERS
.TP 20
\fIlayer\fP
Layout layer of the segment
.TP
\fIwidth\fP
Width of the segment
.TP
\fIins1\fP
Name of the instance in which the connector \fIcon1\fP is to be looked for
.TP
\fIcon1\fP
Name of a connector, or reference, used as first endpoint of the wire
.TP
\fIins2\fP
Name of the instance in which the connector \fIcon2\fP is to be looked for
.TP
\fIcon2\fP
Name of a connector, or reference, used as last endpoint of the wire
.TP
\fIx1, y1\fP
Coordinates of the segment's first elbow endpoint in the current figure
.TP
\fIx2, y2\fP
Coordinates of the segment's second elbow endpoint in the current figure
.SH DESCRIPTION
\fBWIRE3\fP adds three segments made of the \fIlayer\fP level in the current
layout cell, the starting point
beeing the connector, or reference, \fIcon1\fP of the instance \fIins1\fP, and
the ending point beeing the connector, or reference, \fIcon2\fP of the instance
\fIins1\fP. The first segment is drawn between the coordinates of \fIcon1\fP in
the current figure and \fIx1, y1\fP. The second one between \fIx1, y1\fP and
\fIx2, y2\fP, and the last, but not the least, between \fIx2, y2\fP and the
coordinates of \fIcon2\fP in the current figure.
.LP
If the endpoints are connectors, the indexes \fIindex1\fP and \fIindex2\fP must
respectivly refer to \fIcon1\fP and \fIcon2\fP.
If they are references, then they are not taked care of.
One shall notice that connectors and references of a given model should not
share names if \fBWIRE3\fP is to be used.
.LP
The \fIlayer\fP argument can take the following legal values :
.RS
.TP
\fBNWELL\fP
.TP
\fBPWELL\fP
.TP
\fBNTIE\fP
.TP
\fBPTIE\fP
.TP
\fBNDIF\fP
.TP
\fBPDIF\fP
.TP
\fBNTRANS\fP
.TP
\fBPTRANS\fP
.TP
\fBPOLY\fP
.TP
\fBALU1\fP
.TP
\fBALU2\fP
.TP
\fBALU3\fP
.TP
\fBTPOLY\fP
.TP
\fBTALU1\fP
.TP
\fBTALU2\fP
.TP
\fBTALU3\fP
.RE
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_WIRE3 impossible : missing GENLIB_DEF_PHFIG"
.ft R
.RS
No figure has been yet specified by a call to \fBDEF_PHFIG\fP. So it isn't
possible to place an instance inside it.
you must call \fBDEF_PHFIG\fP before any other layout action.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal addphseg : x1, y1, x2, y2"
.ft R
.RS
A symbolic segment must be either vertical or horizontal, so either
\fIx1 = x2\fP, or \fIy1 = y2\fP. Since \fBWIRE3\fP creates segments from
relative coordinates, care must be taken to follow the previous rule.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"GENLIB_WIRE3 impossible : same name \fIconX\fP, for connector and reference in
\fIinsX\fP"
.ft R
.RS
The model of the instance \fIinsX\fP has both a connector and a reference
that matches the \fIconX\fP name. This is not legal since genlib doesn't know
which one to choose as point.
.RE
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"illegal getphins : instance \fIinsX\fP does not exist"
.ft R
.RS
The instance called \fIinsX\fP does not currently belong to the figure.
.RE
.SH EXAMPLE
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
draw_wire(cellHeight)
long cellHeight;
{
/* draw a wire made of 1, 2, or 3 segments, given from and to connectors
or reference, and the x and y coordinates of each elbow points */
GENLIB_WIRE1(ALU1,1,"lastpg2","g2",1,"cabl31","sg",2);
GENLIB_WIRE3(ALU1,1,"cabl31","sp",2, "celout2", "cin", 1,
GENLIB_GET_CON_X("cabl31","sp",2),
GENLIB_GET_CON_Y("cabl31","sp",2) + cellHeight / 2,
GENLIB_GET_CON_X("celout2", "cin", 1),
GENLIB_GET_CON_Y("cabl31","sp",2) + cellHeight / 2);
GENLIB_WIRE1(POLY,1,"celout3","g",1,"celout2","co",0);
}
.ft R
.fi
.SH SEE ALSO
.BR genlib (1),
.BR GENLIB_DEF_PHFIG (3),
.BR GENLIB_SAVE_PHFIG (3),
.BR GENLIB_COPY_UP_SEG (3),
.BR GENLIB_PHSEG (3),
.BR GENLIB_THRU_H (3),
.BR GENLIB_THRU_CON_H (3),
.BR GENLIB_THRU_V (3),
.BR GENLIB_THRU_CON_V (3),
.BR GENLIB_WIRE1 (3),
.BR GENLIB_WIRE2 (3).
.so man1/alc_bug_report.1

View File

@ -0,0 +1,59 @@
man_MANS = GENLIB_BUS.3 \
GENLIB_COPY_UP_ALL_CON.3 \
GENLIB_COPY_UP_ALL_REF.3 \
GENLIB_COPY_UP_CON.3 \
GENLIB_COPY_UP_CON_FACE.3 \
GENLIB_COPY_UP_REF.3 \
GENLIB_COPY_UP_SEG.3 \
GENLIB_DEF_AB.3 \
GENLIB_DEF_LOFIG.3 \
GENLIB_DEF_PHFIG.3 \
GENLIB_DEF_PHINS.3 \
GENLIB_DEF_PHSC.3 \
GENLIB_ELM.3 \
GENLIB_FLATTEN_ALL_LOINS.3 \
GENLIB_FLATTEN_ALL_PHINS.3 \
GENLIB_FLATTEN_LOFIG.3 \
GENLIB_FLATTEN_PHFIG.3 \
GENLIB_GET_CON_X.3 \
GENLIB_GET_CON_Y.3 \
GENLIB_GET_INS_X.3 \
GENLIB_GET_INS_Y.3 \
GENLIB_GET_REF_X.3 \
GENLIB_GET_REF_Y.3 \
GENLIB_HEIGHT.3 \
GENLIB_LOAD_LOFIG.3 \
GENLIB_LOAD_PHFIG.3 \
GENLIB_LOCON.3 \
GENLIB_LOINS.3 \
GENLIB_LOINSE.3 \
GENLIB_LOSIG.3 \
GENLIB_LOSIGMERGE.3 \
GENLIB_LOTRS.3 \
GENLIB_OUTLINE.3 \
GENLIB_PHCON.3 \
GENLIB_PHREF.3 \
GENLIB_PHSEG.3 \
GENLIB_PHVIA.3 \
GENLIB_PLACE.3 \
GENLIB_PLACE_BOTTOM.3 \
GENLIB_PLACE_CON_REF.3 \
GENLIB_PLACE_LEFT.3 \
GENLIB_PLACE_ON.3 \
GENLIB_PLACE_RIGHT.3 \
GENLIB_PLACE_SEG_REF.3 \
GENLIB_PLACE_TOP.3 \
GENLIB_PLACE_VIA_REF.3 \
GENLIB_REVERSE_PHCON.3 \
GENLIB_SAVE_LOFIG.3 \
GENLIB_SAVE_PHFIG.3 \
GENLIB_SAVE_PHSC.3 \
GENLIB_SC_BOTTOM.3 \
GENLIB_SC_LEFT.3 \
GENLIB_SC_PLACE.3 \
GENLIB_SC_RIGHT.3 \
GENLIB_SC_TOP.3 \
GENLIB_UNFLATTEN_LOFIG.3 \
GENLIB_WIRE1.3 \
GENLIB_WIRE2.3 \
GENLIB_WIRE3.3

View File

@ -0,0 +1,9 @@
lib_LIBRARIES = libMgn.a
include_HEADERS = mgn.h mbkgen.h
libMgn_a_SOURCES = genlib.c
bin_SCRIPTS = genlib
CLEANFILES = genlib
genlib : ${srcdir}/genlib.sh
${SED} 's,__ALLIANCE_INSTALL_DIR__,$(ALLIANCE_INSTALL_DIR),' $< > $@
chmod a+x $@

File diff suppressed because it is too large Load Diff

143
alliance/src/genlib/src/genlib.sh Executable file
View File

@ -0,0 +1,143 @@
#!/bin/sh
#
# This file is part of the Alliance CAD System
# Copyright (C) Laboratoire LIP6 - Département ASIM
# Universite Pierre et Marie Curie
#
# Home page : http://www-asim.lip6.fr/alliance/
# E-mail support : mailto:alliance-support@asim.lip6.fr
#
# This progam is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.
#
# Alliance VLSI CAD System is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with the GNU C Library; see the file COPYING. If not, write to the Free
# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# $Id: genlib.sh,v 1.1 2002/03/08 14:08:11 fred Exp $
help() {
echo "Syntax: `basename $0` [-vk] source-file (without extension)"
echo " -v : verbose mode"
echo " -k : keeps the executable (whith debugging"
echo " informations) along with the"
echo " compilation Makefile after completion"
exit 1
}
if [ $# -lt 1 -o $# -gt 6 ] ; then
echo "Syntax: `basename $0` [-vk] source-file (without extension)"
exit 1
fi
talk=0
devel=0
keep=0
debug=
lib=""
libpath=""
name=""
while [ $# -gt 0 ]
do
case $1 in
-v) talk=1;;
-d) devel=1;;
-k) keep=1;debug=-g;;
-vk) keep=1;debug=-g; talk=1;;
-kv) keep=1;debug=-g; talk=1;;
-l*) lib=$1;;
-L*) libpath=$1;;
*) if [ -z "$name" ]; then
name=$1;
else
help
fi
esac
shift
done
trap "rm -f ./*.$$; exit 1" 1 2 3 6
alcbanner "GenLib" "3.3" "Procedural Generation Language" "1991"
if [ -z "$name" ] ; then
help
fi
if [ ! -f $name.c ] ; then
echo "There seems no to be a file called $name.c"
help
fi
if [ $talk -eq 1 ]; then
echo "Generating the Makefile";
fi
# see genpat for another way of creating Makefile ;-) Czo...
# --------------------------------------------------------------------
# Development hacks.
if [ $devel -eq 1 ]; then
ALLIANCE_INSTALL_DIR="__ALLIANCE_INSTALL_DIR__"
ALLIANCE_DEVEL_INCLUDE="-I${ALLIANCE_INSTALL_DIR}/include"
ALLIANCE_DEVEL_LIB="-L${ALLIANCE_INSTALL_DIR}/lib"
ALLIANCE_LIB=${ALLIANCE_TOP}/lib
ALLIANCE_INCLUDE=${ALLIANCE_TOP}/include
fi
makefile="Makefile.$$"
echo 'include $(ALLIANCE_TOP)/etc/libraries.mk' > $makefile
echo 'include $(ALLIANCE_TOP)/etc/$(ALLIANCE_OS).mk' >> $makefile
echo 'ALLIANCE_LIBRARY = '${ALLIANCE_DEVEL_LIB}' -L$(ALLIANCE_LIB) \
-lMgn -lMlu -lMpu -lMcp -lMap -lMmg -lMcl -lMgl \
-lMal -lMvl -lMel -lMsl -lMhl -lMlo -lMph -lMut -lRcn' >> $makefile
echo "ALLIANCE_INC = ${ALLIANCE_DEVEL_INCLUDE} -I\$(ALLIANCE_INCLUDE)" >> $makefile
echo "$name : $name.c" >> $makefile
echo ' $(CC) ' \
"$debug -o $name $name.c $libpath $lib" \
'$(ALLIANCE_INC) $(ALLIANCE_LIBRARY)' >> $makefile
if [ $talk -eq 1 ]; then
echo "Compiling, ..."
fi
make -f $makefile > $name.grr 2>&1
if [ ! $? -eq 0 ]; then
echo "Compilation failed!"
cat $name.grr
exit 1
fi
if [ $talk -eq 1 ] ; then
echo "Current execution environment"
echo "MBK_CATA_LIB : ${MBK_CATA_LIB-no cell library specified}"
echo "MBK_WORK_LIB : ${MBK_WORK_LIB-:}"
echo "MBK_IN_LO : ${MBK_IN_LO-vst}"
echo "MBK_OUT_LO : ${MBK_OUT_LO-vst}"
echo "MBK_IN_PH : ${MBK_IN_PH-ap}"
echo "MBK_OUT_PH : ${MBK_OUT_PH-ap}"
echo "MBK_CATAL_NAME : ${MBK_CATAL_NAME-CATAL}"
fi
if [ $talk -eq 1 ]; then
echo "Executing ..."
fi
./$name
exit_code=$?
if [ $talk -eq 1 ]; then
echo "Removing tmp files ..."
fi
if [ $keep -eq 0 ] ; then
rm $name;
fi
rm $name.o $name.grr $makefile > /dev/null 2>&1
exit $exit_code

View File

@ -0,0 +1,51 @@
/*
* This file is part of the Alliance CAD System
* Copyright (C) Laboratoire LIP6 - Département ASIM
* Universite Pierre et Marie Curie
*
* Home page : http://www-asim.lip6.fr/alliance/
* E-mail support : mailto:alliance-support@asim.lip6.fr
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Library General Public License as published
* by the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* Alliance VLSI CAD System is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with the GNU C Library; see the file COPYING. If not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/*
*
* mbkgen.h : header for the definition of genlib external variable
* version : 1.00
* date : 05/02/92
* author : Frederic Petrot
* $Id: mbkgen.h,v 1.1 2002/03/08 14:08:11 fred Exp $
*/
#ifndef _MBKGEN_H_
#define _MBKGEN_H_
#ifdef _MPH_H_
extern phfig_list *WORK_PHFIG;
extern phins_list *WORK_PHINS;
#endif
#ifdef _MLO_H_
extern lofig_list *WORK_LOFIG;
extern long num_index;
#endif
enum {MBK_INSTANCE, MBK_SEGMENT, MBK_CONNECTOR, MBK_REFERENCE, MBK_VIA};
extern int is_bus();
extern int bus_decod();
#endif

View File

@ -0,0 +1,352 @@
/*
* This file is part of the Alliance CAD System
* Copyright (C) Laboratoire LIP6 - Département ASIM
* Universite Pierre et Marie Curie
*
* Home page : http://www-asim.lip6.fr/alliance/
* E-mail support : mailto:alliance-support@asim.lip6.fr
*
* This progam is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* Alliance VLSI CAD System is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with the GNU C Library; see the file COPYING. If not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/*******************************************************************************
* mgn.h *
* header for the definition of genlib functions, and macros *
* author : Frederic Petrot *
* version : 3.18 *
* date : 03/09/93 *
* version : 3.26 *
* date : 10/06/97 *
*******************************************************************************/
/* Types for the ptype lists as required in version 3.26
As the types are all exclusives from another there is no need for
styled values. */
/*******************************************************************************
* physical placement functions *
*******************************************************************************/
extern void genDEF_PHFIG();
extern void genLOAD_PHFIG();
extern void genSAVE_PHFIG();
extern void genDEF_AB();
extern void genDEF_PHINS();
extern ptype_list *genPHCON();
extern ptype_list *genCOPY_UP_CON();
extern ptype_list *genCOPY_UP_CON_FACE();
extern ptype_list *genCOPY_UP_ALL_CON();
extern ptype_list *genPHSEG();
extern ptype_list *genCOPY_UP_SEG();
extern ptype_list *genTHRU_H();
extern ptype_list *genTHRU_V();
extern ptype_list *genTHRU_CON_H();
extern ptype_list *genTHRU_CON_V();
extern ptype_list *genWIRE1();
extern ptype_list *genWIRE2();
extern ptype_list *genWIRE3();
extern ptype_list *genPHVIA();
extern ptype_list *genPHBIGVIA();
extern ptype_list *genPLACE();
extern ptype_list *genPLACE_RIGHT();
extern ptype_list *genPLACE_TOP();
extern ptype_list *genPLACE_LEFT();
extern ptype_list *genPLACE_BOTTOM();
extern ptype_list *genPLACE_REF();
extern ptype_list *genPLACE_ON();
extern ptype_list *genPHREF();
extern void genDEL_PHREF();
extern ptype_list *genCOPY_UP_REF();
extern ptype_list *genCOPY_UP_ALL_REF();
extern ptype_list *genPLACE_VIA_REF();
extern ptype_list *genPLACE_CON_REF();
extern ptype_list *genPLACE_SEG_REF();
extern void genFLATTEN_PHFIG();
extern void genFLATTEN_ALL_PHINS();
extern long genGET_PHFIG_REF_X();
extern long genGET_PHFIG_REF_Y();
extern long genGET_REF_X();
extern long genGET_REF_Y();
extern long genGET_CON_X();
extern long genGET_CON_Y();
extern long genGET_INS_X();
extern long genGET_INS_Y();
extern long genHEIGHT();
extern long genWIDTH();
extern void genREVERSE_PHCON();
extern void genOUTLINE();
/*******************************************************************************
* netlist description functions *
*******************************************************************************/
extern void genDEF_LOFIG();
extern void genLOAD_LOFIG();
extern void genSAVE_LOFIG();
extern void genLOINS();
extern void genLOINSE();
extern void genLOINSA();
extern void genLOTRS();
extern void genLOCON();
extern void genLOSIGMERGE();
extern void genFLATTEN_LOFIG();
extern void genFLATTEN_ALL_LOINS();
extern void genDEF_PHSC();
extern void genSAVE_PHSC();
extern void genSC_PLACE();
extern void genSC_RIGHT();
extern void genSC_LEFT();
extern void genSC_TOP();
extern void genSC_BOTTOM();
extern void genSC_CHANNEL();
extern void genSC_CON_CHANNEL();
/*******************************************************************************
* name forming functions, for both views *
*******************************************************************************/
extern char *genBUS();
extern char *genELM();
extern char *genNAME();
/*******************************************************************************
* macro definitions for allowed stdlib functions *
*******************************************************************************/
#define PRINTF printf
#define STRLEN(a) (long)(a == NULL ? 0 : strlen(a))
/*******************************************************************************
* macro definitions in order to allows float and integer typed parameters *
*******************************************************************************/
#ifndef __GENLIB__
#define GENLIB_DEF_PHFIG(name) genDEF_PHFIG(name)
#define GENLIB_LOAD_PHFIG(name) genLOAD_PHFIG(name)
#define GENLIB_SAVE_PHFIG genSAVE_PHFIG
#define GENLIB_DEF_AB(dx1,dy1,dx2,dy2) \
genDEF_AB((long)((dx1)*SCALE_X),(long)((dy1)*SCALE_X), \
(long)((dx2)*SCALE_X),(long)((dy2)*SCALE_X))
#define GENLIB_DEF_PHINS(name) \
genDEF_PHINS(name)
#define GENLIB_PHCON(layer,width,name,orient,x,y) \
genPHCON(layer,(long)((width)*SCALE_X),name,orient, \
(long)((x)*SCALE_X),(long)((y)*SCALE_X))
#define GENLIB_COPY_UP_CON(index,locname,insname,newname) \
genCOPY_UP_CON(index,locname,insname,newname)
#define GENLIB_COPY_UP_ALL_CON(orient,insname,cheminom) \
genCOPY_UP_ALL_CON(orient,insname,cheminom)
#define GENLIB_COPY_UP_CON_FACE(orient,locname,insname,newname) \
genCOPY_UP_CON_FACE(orient,locname,insname,newname)
#define GENLIB_PHSEG(layer,width,name,x1,y1,x2,y2) \
genPHSEG(layer,(long)((width)*SCALE_X),name,(long)((x1)*SCALE_X), \
(long)((y1)*SCALE_X), (long)((x2)*SCALE_X), \
(long)((y2)*SCALE_X))
#define GENLIB_COPY_UP_SEG(locname,insname,newname) \
genCOPY_UP_SEG(locname,insname,newname)
#define GENLIB_WIRE1(layer,width,ins1,con1,index1,ins2,con2,index2) \
genWIRE1(layer,(long)((width)*SCALE_X),ins1,con1,index1,ins2, \
con2,index2)
#define GENLIB_WIRE2(layer,width,ins1,con1,index1,ins2,con2,index2,x,y) \
genWIRE2(layer,(long)((width)*SCALE_X),ins1,con1,index1,ins2, \
con2,index2, (long)((x)*SCALE_X),(long)((y)*SCALE_X))
#define GENLIB_WIRE3(layer,width,ins1,con1,index1,ins2,con2,index2,x1,y1,x2,y2) \
genWIRE3(layer,(long)((width)*SCALE_X),ins1,con1,index1,ins2, \
con2,index2, (long)((x1)*SCALE_X),(long)((y1)*SCALE_X), \
(long)((x2)*SCALE_X),(long)((y2)*SCALE_X))
#define GENLIB_PHVIA(type,x,y) \
genPHVIA(type,(long)((x)*SCALE_X),(long)((y)*SCALE_X))
#define GENLIB_PHBIGVIA(type,x,y,dx,dy,name) \
genPHBIGVIA(type,(long)((x)*SCALE_X),(long)((y)*SCALE_X), \
(long)((dx)*SCALE_X),(long)((dy)*SCALE_X),name)
#define GENLIB_PLACE(figname,insname,sym,x,y) \
genPLACE(figname,insname,sym,(long)((x)*SCALE_X),(long)((y)*SCALE_X))
#define GENLIB_PLACE_RIGHT(figname,insname,sym) genPLACE_RIGHT(figname,insname,sym)
#define GENLIB_PLACE_TOP(figname,insname,sym) genPLACE_TOP(figname,insname,sym)
#define GENLIB_PLACE_LEFT(figname,insname,sym) genPLACE_LEFT(figname,insname,sym)
#define GENLIB_PLACE_BOTTOM(figname,insname,sym) genPLACE_BOTTOM(figname,insname,sym)
#define GENLIB_PLACE_REF(figname,insname,sym,insref,refname) \
genPLACE_REF(figname,insname,sym,insref,refname)
#define GENLIB_PLACE_ON(figname,insname1,con1,index1,sym,insname2,con2,index2) \
genPLACE_ON(figname,insname1,con1,index1,sym,\
insname2,con2,index2)
#define GENLIB_THRU_H(layer,width,y) \
genTHRU_H(layer,(long)((width)*SCALE_X),(long)((y)*SCALE_X))
#define GENLIB_THRU_V(layer,width,x) \
genTHRU_V(layer,(long)((width)*SCALE_X),(long)((x)*SCALE_X))
#define GENLIB_THRU_CON_H(layer,width,name,y) \
genTHRU_CON_H(layer,(long)((width)*SCALE_X),name,(long)((y)*SCALE_X))
#define GENLIB_THRU_CON_V(layer,width,name,x) \
genTHRU_CON_V(layer,(long)((width)*SCALE_X),name,(long)((x)*SCALE_X))
#define GENLIB_PHREF(type,name,x,y) \
genPHREF(type,name,(long)((x)*SCALE_X),(long)((y)*SCALE_X))
#define GENLIB_DEL_PHREF genDEL_PHREF
#define GENLIB_COPY_UP_REF(refname,insname,newname) \
genCOPY_UP_REF(refname,insname,newname)
#define GENLIB_COPY_UP_ALL_REF(reftype,insname,cheminom) \
genCOPY_UP_ALL_REF(reftype,insname,cheminom)
#define GENLIB_PLACE_VIA_REF(insname,refname,type) \
genPLACE_VIA_REF(insname,refname,type)
#define GENLIB_PLACE_CON_REF(insname,refname,conname,layer,width,face) \
genPLACE_CON_REF(insname,refname,conname,layer,\
(long)((width)*SCALE_X),face)
#define GENLIB_PLACE_SEG_REF(insname,refname,layer,width,face) \
genPLACE_SEG_REF(insname,refname,layer,(long)((width)*SCALE_X),face)
#define GENLIB_GET_PHFIG_REF_X(refname) \
((genGET_PHFIG_REF_X(refname)/SCALE_X))
#define GENLIB_GET_PHFIG_REF_Y(refname) \
((genGET_PHFIG_REF_Y(refname)/SCALE_X))
#define GENLIB_GET_REF_X(insname,refname) \
((genGET_REF_X(insname,refname)/SCALE_X))
#define GENLIB_GET_REF_Y(insname,refname) \
((genGET_REF_Y(insname,refname)/SCALE_X))
#define GENLIB_GET_INS_X(insname) ((genGET_INS_X(insname)/SCALE_X))
#define GENLIB_GET_INS_Y(insname) ((genGET_INS_Y(insname)/SCALE_X))
#define GENLIB_GET_INS_XDX(insname) ((genGET_INS_XDX(insname)/SCALE_X))
#define GENLIB_GET_INS_YDY(insname) ((genGET_INS_YDY(insname)/SCALE_X))
#define GENLIB_GET_CON_X(insname,conname,index) \
((genGET_CON_X(insname,conname,index)/SCALE_X))
#define GENLIB_GET_CON_Y(insname,conname,index) \
((genGET_CON_Y(insname,conname,index)/SCALE_X))
#define GENLIB_GET_CON_LAYER(insname,conname,index) \
(genGET_CON_LAYER(insname,conname,index))
#define GENLIB_HEIGHT(cellName) ((genHEIGHT(cellName)/SCALE_X))
#define GENLIB_WIDTH(cellName) ((genWIDTH(cellName)/SCALE_X))
#define GENLIB_FLATTEN_PHFIG(insname,concat) genFLATTEN_PHFIG(insname,concat)
#define GENLIB_FLATTEN_ALL_PHINS(concat, catal) genFLATTEN_ALL_PHINS(concat, catal)
#define GENLIB_REVERSE_PHCON(conname) genREVERSE_PHCON(conname)
#define GENLIB_OUTLINE genOUTLINE
#define GENLIB_DEF_LOFIG(name) genDEF_LOFIG(name)
#define GENLIB_LOAD_LOFIG(name) genLOAD_LOFIG(name)
#define GENLIB_SAVE_LOFIG genSAVE_LOFIG
#define GENLIB_LOSIG(name) genLOSIG(name)
#define GENLIB_LOINS genLOINS
#define GENLIB_LOINSE genLOINSE
#define GENLIB_LOINSA genLOINSA
#define GENLIB_LOTRS(type,width,length,grid,source,drain) \
genLOTRS(type,(long)((width)*SCALE_X), \
(long)((length)*SCALE_X),grid,source,drain)
#define GENLIB_LOCON(conname,direction,signame) genLOCON(conname,direction,signame)
#define GENLIB_LOSIGMERGE(signame1, signame2) genLOSIGMERGE(signame1, signame2)
#define GENLIB_FLATTEN_LOFIG(insname,concat) genFLATTEN_LOFIG(insname,concat)
#define GENLIB_FLATTEN_ALL_LOINS(concat, catal) genFLATTEN_ALL_LOINS(concat, catal)
#define GENLIB_UNFLATTEN_LOFIG genUNFLATTEN_LOFIG
#define GENLIB_USED(s, c) genUSED(s, c)
#define GENLIB_DEF_PHSC(name) genDEF_PHSC(name)
#define GENLIB_SAVE_PHSC genSAVE_PHSC
#define GENLIB_SC_PLACE(insname,sym,x,y) \
genSC_PLACE(insname,sym,(long)((x)*SCALE_X),(long)((y)*SCALE_X))
#define GENLIB_SC_RIGHT(insname,sym) genSC_RIGHT(insname,sym)
#define GENLIB_SC_LEFT(insname,sym) genSC_LEFT(insname,sym)
#define GENLIB_SC_TOP(insname,sym) genSC_TOP(insname,sym)
#define GENLIB_SC_BOTTOM(insname,sym) genSC_BOTTOM(insname,sym)
#define GENLIB_SC_CHANNEL(direction,width,insname) \
genSC_CHANNEL(direction,(long)((width)*SCALE_X),insname)
#define GENLIB_SC_CON_CHANNEL(conname,orient,layer,width,insname) \
genSC_CON_CHANNEL(conname,orient,layer,\
(long)((width)*SCALE_X),insname)
#define GENLIB_BUS(signame,from,to) genBUS(signame,from,to)
#define GENLIB_ELM(signame,number) genELM(signame,number)
#define GENLIB_NAME genNAME
#endif
/*
* New allowed names for layers and contacts
*/
#define METAL ALU1
#define ALLOWM TALU1
#define METAL2 ALU2
#define ALLOWM2 TALU2
#define METAL3 ALU3
#define ALLOWM3 TALU3
#define METAL4 ALU4
#define ALLOWM4 TALU4
#define METAL5 ALU5
#define ALLOWM5 TALU5
#define METAL6 ALU6
#define ALLOWM6 TALU6
#define METAL7 ALU7
#define ALLOWM7 TALU7
#define METAL8 ALU8
#define ALLOWM8 TALU8
#define METAL9 ALU9
#define ALLOWM9 TALU9
#define VIA12 CONT_VIA
#define VIA23 CONT_VIA2
#define VIA34 CONT_VIA3
#define VIA45 CONT_VIA4
#define VIA56 CONT_VIA5
#define VIA67 CONT_VIA6
#define VIA78 CONT_VIA7
#define VIA89 CONT_VIA8
/* Names usable that macro-expand into several contacts: they have no
* internal counterparts.
*/
#define VIA13 (LAST_CONTACT + 1)
#define VIA14 (LAST_CONTACT + 2)
#define VIA15 (LAST_CONTACT + 3)
#define VIA16 (LAST_CONTACT + 4)
#define VIA17 (LAST_CONTACT + 5)
#define VIA18 (LAST_CONTACT + 6)
#define VIA19 (LAST_CONTACT + 7)
#define VIA24 (LAST_CONTACT + 8)
#define VIA25 (LAST_CONTACT + 9)
#define VIA26 (LAST_CONTACT + 10)
#define VIA27 (LAST_CONTACT + 11)
#define VIA28 (LAST_CONTACT + 12)
#define VIA29 (LAST_CONTACT + 13)
#define VIA35 (LAST_CONTACT + 14)
#define VIA36 (LAST_CONTACT + 15)
#define VIA37 (LAST_CONTACT + 16)
#define VIA38 (LAST_CONTACT + 17)
#define VIA39 (LAST_CONTACT + 18)
#define VIA46 (LAST_CONTACT + 19)
#define VIA47 (LAST_CONTACT + 20)
#define VIA48 (LAST_CONTACT + 21)
#define VIA49 (LAST_CONTACT + 22)
#define VIA57 (LAST_CONTACT + 23)
#define VIA58 (LAST_CONTACT + 24)
#define VIA59 (LAST_CONTACT + 25)
#define VIA68 (LAST_CONTACT + 26)
#define VIA69 (LAST_CONTACT + 27)
#define VIA79 (LAST_CONTACT + 28)
#define CONT_VIA13 VIA13
#define CONT_VIA14 VIA14
#define CONT_VIA15 VIA15
#define CONT_VIA16 VIA16
#define CONT_VIA17 VIA17
#define CONT_VIA18 VIA18
#define CONT_VIA19 VIA19
#define CONT_VIA24 VIA24
#define CONT_VIA25 VIA25
#define CONT_VIA26 VIA26
#define CONT_VIA27 VIA27
#define CONT_VIA28 VIA28
#define CONT_VIA29 VIA29
#define CONT_VIA35 VIA35
#define CONT_VIA36 VIA36
#define CONT_VIA37 VIA37
#define CONT_VIA38 VIA38
#define CONT_VIA39 VIA39
#define CONT_VIA46 VIA46
#define CONT_VIA47 VIA47
#define CONT_VIA48 VIA48
#define CONT_VIA49 VIA49
#define CONT_VIA57 VIA57
#define CONT_VIA58 VIA58
#define CONT_VIA59 VIA59
#define CONT_VIA68 VIA68
#define CONT_VIA69 VIA69
#define CONT_VIA79 VIA79