GENLIB(1)

πŸ“¦ version 5.1.1, in fedora 43, fedora 44

🌸 GENLIB β€” bestie edition 🌸

okay so first things first, the manual name is genlib, it lives in the Alliance - genlib User's Manual corner of the world, and section 1 is where you'll find it. say hi πŸ‘‹

✨ NAME ✨

genlib β€” a procedural design language based upon C. yes. it's C. we're doing C. πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

so genlib is a whole set of C functions that exist purely for procedural generation purposes. no cap. and from your little user perspective, genlib is basically a circuit's description language β€” it lets you use standard C programming flow control, variable use, and specialized functions to handle vlsi objects. it's giving "C but make it silicon." πŸ”₯

built on top of the Alliance mbk data structures, the genlib language hands you the ability to describe both netlist and layout views, which means both standard cell and full custom approaches are on the menu. obsessed. πŸ’–

πŸ’œ NETLIST CAPTURE

this one is a hierachical structural description of a circuit in terms of connectors (I/Os), signals (nets), and instances.

the function calls used to handle the netlist view are :

  • GENLIB_DEF_LOFIG(3)
  • GENLIB_SAVE_LOFIG(3)
  • GENLIB_LOINS(3)
  • GENLIB_LOCON(3)
  • GENLIB_LOSIG(3)
  • GENLIB_FLATTEN_LOFIG(3) β€” Some facilities, in order to create vectors are also available :
  • GENLIB_BUS(3)
  • GENLIB_ELM(3)

🌈 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 ocr(1) :

  • GENLIB_DEF_PHSC(3)
  • GENLIB_SAVE_PHSC(3)
  • GENLIB_SC_PLACE(3)
  • GENLIB_SC_RIGHT(3)
  • GENLIB_SC_TOP(3)
  • GENLIB_SC_LEFT(3)
  • GENLIB_SC_BOTTOM(3)

πŸ‘‘ FULL CUSTOM SYMBOLIC LAYOUT

those functions are dedicated to optimized full custom procedural layout. and in order to provide some process independance, Alliance uses a symbolic layout approach (fixed grid without compaction). slay.

the symbolic objects are segments (wires), vias (contacts), connectors (I/Os), references and instances. for more information, see phseg(1), phvia(1), phcon(1), phref(1), phins(1) and alc(1).

  • GENLIB_DEF_PHFIG(3)
  • GENLIB_SAVE_PHFIG(3)
  • GENLIB_DEF_AB(3)
  • GENLIB_DEF_PHINS(3)
  • GENLIB_PHCON(3)
  • GENLIB_COPY_UP_CON(3)
  • GENLIB_COPY_UP_CON_FACE(3)
  • GENLIB_COPY_UP_ALL_CON(3)
  • GENLIB_PHSEG(3)
  • GENLIB_COPY_UP_SEG(3)
  • GENLIB_THRU_H(3)
  • GENLIB_THRU_V(3)
  • GENLIB_THRU_CON_H(3)
  • GENLIB_THRU_CON_V(3)
  • GENLIB_WIRE1(3)
  • GENLIB_WIRE2(3)
  • GENLIB_WIRE3(3)
  • GENLIB_PHVIA(3)
  • GENLIB_PLACE(3)
  • GENLIB_PLACE_RIGHT(3)
  • GENLIB_PLACE_TOP(3)
  • GENLIB_PLACE_LEFT(3)
  • GENLIB_PLACE_BOTTOM(3)
  • GENLIB_PLACE_ON(3)
  • GENLIB_PHREF(3)
  • GENLIB_COPY_UP_REF(3)
  • GENLIB_COPY_UP_ALL_REF(3)
  • GENLIB_PLACE_VIA_REF(3)
  • GENLIB_PLACE_CON_REF(3)
  • GENLIB_PLACE_SEG_REF(3)
  • GENLIB_FLATTEN_PHFIG(3)
  • GENLIB_GET_REF_X(3)
  • GENLIB_GET_REF_Y(3)
  • GENLIB_GET_CON_X(3)
  • GENLIB_GET_CON_Y(3)
  • GENLIB_HEIGHT(3)
  • GENLIB_WIDTH(3) β€” In order to have information about each of these functions, use the online documentation with man(1), as in man function-name.
fr fr, 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 genlib source code. do it for yourself bestie 🫢

πŸ’– ENVIRONMENT VARIABLES πŸ’–

  • MBK_IN_LO(1), default value : al
  • MBK_OUT_LO(1), default value : al
  • MBK_IN_PH(1), default value : ap
  • MBK_OUT_LO(1), default value : ap
  • MBK_CATA_LIB(1), default value : .
  • MBK_WORK_LIB(1), default value : .
  • MBK_CATAL_NAME(1), default value : CATAL β€” See the corresponding manual pages for further information.

so, in order to compile and execute a genlib file, one has to call genlib with one argument, that is the genlib source file. the source file must have a .c extension, but the extension should not be mentioned on the command line. noted. πŸ“

the names used in genlib, as arguments to genlib functions, should be alphanumerical, including the underscore. they also are not case sensitive, so VDD is equivalent to vdd. iconique. Vectorized connectors or signal can be declareds using the [n:m] construct. πŸŽ€


⭐ SYNOPSIS ⭐

genlib [         -cklmnv
 ] [ --no-rm-core ] [ --keep-makefile ] [ --keep-exec ] [ --keep-log ] [
--no-exec ] [ --verbose ] program [ -e program_args ]

🧚 OPTIONS 🧚

  • <program> β€” the name of the C file containing the genlib program, whitout extention. Mandatory argument. (yes you have to give us this one, no skipping πŸ’€)
  • [--no-rm-core|-c] β€” in case of core dump, do not remove the generated core file. This option must be used with [--keep-exec|-k].
  • [--keep-makefile|-m] β€” do not erase the generated makefile after execution.
  • [--keep-exec|-k] β€” keep the generated executable after the genlib run.
  • [--keep-log|-l] β€” do not erase the log file after a successful completion (the log is keeped after a faulty run).
  • [--no-exec|-n] β€” do not run the generated program. Should be used with [--keep-exec|-k].
  • [--no-verbose|-v] β€” self explanatory.
  • [-e] β€” all the following arguments are handled to the compiled program.

πŸ”₯ EXAMPLES πŸ”₯

Compile and run a file amd2901.c :

genlib -v amd2901

πŸ’œ SEE ALSO πŸ’œ

  • mbk(1),

😭 DIAGNOSTIC 😭

Many errors may occur while executing the source file, so refer to the proper genlib function manual for more. When an error occur, genlib left a log file <program>.grr. As <program>.c is a C program, all syntatic C error can occurs... πŸ’€

All genlib functions are listed below alphabetically sorted.


and that's the whole thing, bestie ✨ this page came to you from ASIM/LIP6, dated 30 July 2004 β€” old but iconic, we stan a legacy tool 🫢πŸ’