L2P(1)

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

πŸ’– L2P(1) β€” the CAO-VLSI Reference Manual, but make it cute πŸ’–

okay bestie, sit down, we're learning l2p today and honestly? it's giving "print your chip layout and look good doing it". no cap. πŸ¦‹


✨ NAME ✨

l2p β€” creates a PostScript file from a symbolic layout file, or from a physical layout file. periodt. πŸŽ€


🌸 ORIGIN 🌸

This software belongs to the ALLIANCE CAD SYSTEM developed by the ASIM team at LIP6 laboratory of UniversitΓ© Pierre and Marie CURIE, in Paris, France. iconic academic behavior honestly πŸ‘‘


🫢 SYNOPSIS 🫢

l2p    [-color] [-drawingsize=<w>x<h>] [-fA3] [-fLETTER] [-fLEGAL]
       [-givebwdict] [-givecolordict] [-help] [-noheader]
       [-papersize=<x>x<y>x<w>x<h>] [-pages=<x>x<y>] [-tsize=<s>]
       [-nrname] [-ncname] [-nrfname] [-niname] [-nsname] [-mfeed]
       [-real] [-resol=<x>] [-rflattencatal] [-rflattentrans] [-rotate]
       [-scale=<f.f>] [-usedict=<f>] cellname

πŸ’… DESCRIPTION πŸ’…

okay so two main kind of cells can be used as inputs for l2p:

  1. Symbolic layout cells. You can use l2p to print symbolic layout cells, and the file formats can be .ap or .cp. This is given by an environment variable MBK_IN_PH that gives the appropriate symbolic layout file format. 🌈
  2. Real layout cells. You can also use l2p to print real layout cells whose file formats can be .cif or .gds. This is given by an environment variable RDS_IN that gives the appropriate real layout file format. πŸ”₯

The path to the input file is set up by two environment variables: MBK_WORK_LIB(3) and, if not found, MBK_CATA_LIB(3). πŸ’–

The output of l2p is a PostScript file in the current directory. The drawing size and the paper size can be specified by the user. So, you can split your drawing in as many pages as wanted. The resulting file can be then used on any adequat Postcript printer. πŸ–¨οΈ

l2p will generate in the current directory, either a single file called <cellname>.ps, either several files suffixed by -<x>x<y>.ps, depending on whether you've asked for a monopage plot or for a drawing that will be split on several pages. If you do something like l2p -pages=2x1 cell, it will generate two files called cell-1x1.ps, and cell-2x1.ps. (not me obsessing over file naming conventions 😭)


✨ OPTIONS ✨

With no options, l2p generate a 'standard file', with all options off. This is ok for leaf cells, but not for large circuits. πŸ’€

  • -color β€” generates a color PostScript file for use with color interpreters. The default value gives a black and white PostCript file. 🌈
  • -drawingsize=<width>x<height> β€” specifies the drawing area in centh of inch. By default, wide = 725 and height = 1068 for french A4 paper. If the drawing size is bigger than the paper area, then the drawing will be split on several pages. πŸ“
  • -fA3 β€” The drawing is done on A3 format paper.
  • -fLETTER β€” The drawing is done on LETTER format paper.
  • -fLEGAL β€” The drawing is done on LEGAL format paper.
  • -givebwdict β€” give the Black & White internal PostScript dictionary. See below. πŸ‘€
  • -givecolordict β€” This option must be unique on the command line. When used as in 'l2p -givebwdict', l2p then gives on the standard output its Black & White internal Postscript dictionary. A PostScript dictionary is a set of macros that will be used during interpretation of your PostScript file. The macros in the internal PostScript dictionnaries of l2p allows you to control which layer to output, how to plot rectangles, and specify the colors of the rectangles. You get the standard dictionnary by a line of the form 'l2p -givecolordict > dict.ps'. You can then edit it, in order to reuse it with l2p, see the '-usedict' option below. 🎨
  • -help β€” gives you this man page that explains how to use l2p. bestie behavior fr fr 🫢
  • -noheader β€” prevents the border and various info, as the cellname and the position of the page in the drawing, from being printed. πŸ™ˆ
  • -papersize=<x_low_left>x<y_low_left>x<width>x<height> β€” specifies the paper area in centh of inch. By default, 50x50x726x1069 for a4 paper.
  • -pages=<number_of_x_pages>x<number_of_y_pages> β€” specifies the drawing area in pages. It can be useful, instead of having to calculate the size in cenths of inch of the drawing, to give it in numbers of pages. It takes care of the resizing of the paper and whether there is a header. πŸ“„
  • -tsize=<s> β€” Available sizes: 6,8,10,12,14. The default value is 8.
  • -nrname β€” No name at all will be displayed. 🀐
  • -ncname β€” The external connector's names won't be displayed.
  • -nrfname β€” The references's names won't be displayed.
  • -niname β€” The instances's names won't be displayed.
  • -nsname β€” The segments's names won't be displayed.
  • -mfeed β€” Manualfeed: if set, informs the printer that it will be fed by the user himself, for each printing.
  • -real β€” uses real file (cif, gds). By default, uses symbolic layout file (ap, cp).
  • -resol=<x> β€” is the resolution of the file in dots per inch (dpi). This value has been introducted to limitate the size of the generated PostScript files. Each rectangle whose width and height are smaller than the resolution will not be printed. The default value is 72dpi. It should only be changed in one specifical case : when you want to produce a plot of several meter large. Usually, you must provide a PostScript file sized for A4 paper with a much better resolution than 72dpi. You can then increase that value to up to 1000dpi, but be aware that the size of the file will probably be bigger than a 44Mb SyQuest cartridge that is used in PAO for exchanging data files. 😭
  • -rflattencatal β€” flattens the cell to the catalog level. see catal(5) for more details on the use of the catalog file. Be careful, this option requires a lot of memory... πŸ’€
  • -rflattentrans β€” flattens the cell to the transistor level before printing. Be careful, this option requires a lot more memory... πŸ’€πŸ’€
  • -rotate β€” rotate the cell from 90 degree. This is useful if you have a wide cell, and you want to have it printed in landscape mode. πŸ”„
  • -scale=<f.f> β€” forces the cell to be printed with a certain scale (a floating-point number). This is very useful, when you are printing a whole library of cells, and you want all cells to be printed to the same scale. You can find at which scale a cell was printed by looking at the beginning of the file : 'head n1_y-1x1.ps' will show you a PostScript comment beginning by '%SCALE=3.78435' for example. 🧚
  • -usedict=<filename> β€” The output Postcript file contains a Postcript dictionary of macros. There are two standard dictionnaries used by l2p for black and white or color prints. This allows you to use a PostScript dictionary different from the two internally encoded into l2p. By modifying one of the standard l2p dictionary, you can choose which layer to output, how to fill the rectangles (empty, hashed, filled), which color to choose, ... and lots of other possibilities. The rest of the generated postscript file is mainly orders of drawing rectangles. PostScript is a reverse polish notation language, that is easy to read for simple programs. If you use this functionality, and think that your dictionnaries are worth it, please mail them to alliance-users@asim.lip6.fr, in order to submit them for inclusion in future version of l2p (Thanks). πŸ’Œ

🌈 ENVIRONMENT VARIABLES: 🌈

for symbolic file(s) :

setenv MBK_IN_PH ap
setenv MBK_WORK_LIB .
setenv MBK_CATA_LIB /labo/cells/scr
setenv MBK_CATAL_NAME CATAL
setenv RDS_TECHNO_NAME cmos_1.rds

for real file(s) :

setenv RDS_IN cif
setenv MBK_CATAL_NAME CATAL_ROUT
setenv RDS_TECHNO_NAME prol12_1.rds

πŸŽ€ EXAMPLES: πŸŽ€

  • l2p -color n1_y β€” will create a colored n1_y.ps file in the current directory : the 'standard' way. πŸ’…
  • l2p -real cell β€” will create a cell.ps file in the current directory from cell.cif or cell.gds, depending on the RDS_IN environment variable.
  • l2p -pages=3x2 na2_y β€” size of the created drawing: 3 horizontal pages, 2 vertical ones;

⭐ SEE ALSO ⭐

mbk(1), rds(1), MBK_IN_PH(3), MBK_CATA_LIB(3), MBK_WORK_LIB(3), MBK_CATAL_NAME(3), RDS_TECHNO_NAME(3), pageview(1), gs(1), ghostview(1), lpr(1).


😭 DIAGNOSTICS 😭

You will not be able to generate more than approximativly 30 pages at the same time (because of the FOPEN_MAX of your environment). In this case, see the option that is not implemented yet. πŸ’€

The generated PostScript is Level 1 for black & white plots. When you use color, it generates Level 1 with color extensions. It may not run with strict Level 1 interpreters, although it runs here with our Apple Personal LaserWriter, Sun Sparcprinters, and Canon CLC-300-PS. It follows the Adobe Document Structuring Conventions 1, and as there is a fake bitmap image inside each generated files, you can re-use them in your word-processors, or publishing software, because the PostScript is EPSF-1.2 compliant. πŸ‘‘


πŸ’œ BUG REPORT πŸ’œ

This tool is under development at the ASIM department of the LIP6 laboratory.

We need your feedback to improve documentation and tools. 🫢


and that's the whole page bestie, slay ✨

ASIM/LIP6 β€” October 1, 1997 β€” L2P(1). yeah the date is giving vintage but the tool still eats. πŸ’–πŸ¦‹πŸŽ€