Revision as of 14:17, 25 June 2016 by Org (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

PSX CPU is based on standard cells.

Standard cells are placed by rows. Connections between cells are made using two layers of metal. (Channel Router)

Thus M1 runs parallel to the rows of cells, and M2 (the top layer) - perpendicularly. (Sometimes automatic router place route directly on the area of ​​the cell, if there exist free space for it)

Ground and power supply are also by M1.

M1 is also sometimes used for the connection between adjacent cells, just inside the row of cells, without going beyond its boundaries.

Cells under a microscope look like this:

Standard cell patterns may be rotated by 180o, as the power and ground in alternating rows changes, due to the fact that the cells are stacked zigzag. Let us try to identify all types of standard cells from the existing material.

In some cases, the cell is also mirrored relative to a vertical axis. It seems that fitter tool has a feedback from wire router. Wire routrer (if it is more convenient) can give fitter signal flip cell to wire it easier to get to her input/outputs.


PSX CPU Standard cell library

PSX CPU built on CMOS technology. P and N channel transistors differ in size (P-doping is 1.3-1.5 times thicker). Diffusion is shown in yellow, and the polysilicon as purple. P-type diffusion is usually thickier rather diffusion of N-type, and is closer to the power supply. Accordingly, the diffusion of N-type is usually close to the ground.

In addition to standard NAND, NOR, and so forth, modern logic includes such elements as AO, AOI, OA and the OAI. This variation of And / Or operation with an additional result inversion (I). examples:

  • 22-AOI : Y = ~ (AB | CD)
  • 33-OA : Y = ( (A|B|C) & (D|E|F) )

That is, the first letter indicates what operation is used within the groups, and the second letter indicates what operation is used between groups. Before operation, the number of items placed into each group.

For convenience we have divided the types of categories and assigned them a cell color:

Cell types.jpg

At the moment, we made the identification of almost all cells. PSX CPU contains about 37,600 cells of 150 different types.

Cells Heatmap:

Psxcpu cells map sm.jpg

Cells By Category

Further description of the cell is divided into categories for easier reference.

Lambda cell parameters

Each standard cell library have so-called lambda parameters. They define in units of cells ratio of areas: how much place will take P-diffusion, how much takes the gap between the P- and N- diffusion regions, what size of wires and how they can pass through the cell when installing routing and so forth.

The unit of lambda adopted thickness of the thin element, in our case - is the thickness of polysilicon tracks.

Calculate lambda parameters of some cell.

First, we find the thickness of the polysilicon, as the average sum:

Lambda avg poly.jpg

Then we measure the width of the different parts of the cell and divide by the thickness of the polysilicon. We get the lambda values:

Lamda parts.jpg

  • The width of the P-diffusion 13 lambda
  • The width of the gap 7 lambda
  • The width of the N-diffusion 11 lambda

Lambda parameters allow you to accurately describe the cell and can be used for example when zooming cells in specific cell research programs.

Cell Search Algorithm

Algorithm for identification of cells is quite simple. There is not need any edge detection, or neural networks. The essence of the algorithm is as follows (in the example of the inverter):


  • We start with the scan line pixel cell top (or, if it is rotated by 180 degrees, it will be its bottom). How to find the beginning of the cell a little further.
  • After a row of pixels sample we start to scan its pixels. Our task - to determine what type of topology selected pixel belongs. Because we are interested only topology diffusion (P or N), polysilicon (S) and the substrate (B). For example, when the first row scan inverter we obtain a sequence of pixels: BBBBPPPPPPPPPPBBBBBBBBBNNNNNNNNNBBBB (initially diffusion goes P-type, then the substrate (B), then N-type diffusion). The substrate on the left and the right side we ignore (it is always there).
  • Repeated point we "wrap" in the above example, the string will shrink like: PBN
  • Duplicate strings we also "wrap".
  • As a result of the scanning by the example of the inverter we get a set of strings: PBN SPBSBN PSN PBSBN PBN
  • If we have another line turned BBBBBBBBB (B), it means that we have found the end of the cell and automatically start the next
  • Merge all the substrings and get a string that uniquely identifies the inverter: PBNSPBSBNPSNPBSBNPBN. Profit!

The algorithm can be applied only on an already vectorized cells. Raw photographs require some workaround to skip the garbage.

And the scale of the cell does not matter.