Cell¶
Cell is the fundamental object of all objects in the layout (Ok, some
object, like Port, inherit only Rect, but most inherit Cell). Cell can
be found in cic-core/src/core/cell.cpp
Properties¶
In the object definition file the Cell can contain certain properties
name [mandatory] : Name of the cell, must be uniq
class [optional] : will use
LayoutCellif it’s not specified. Incic-core/src/core/design.cppconstructor there is a list of allowedcellsinherit [optional] : Cell from which this cell will inherit all instructions
leech [optional] : Cell from which this cell will copy all instructions, but will not follow the inheritance hierarchy. In other words it only cares about the first parent, no grandparents.
comment [optional] : can occur anywhere, and is ignored by the compiler
Action¶
Each cell will trigger actions in a specific sequence. The sequence is as follows:
Create object if the class exists
Set name
Run
afterNewof all parents, starting with the oldestRun
afterNewof the current cellSet all properties, and run all custom functions on the object
Run
beforePlaceof all parents, starting with the oldestRun
beforePlaceof the current cellCall place() on the object
Run
afterPlaceof all parents, starting with the oldestRun
afterPlaceof the current cellRun
beforeRouteof all parents, starting with the oldestRun
beforeRouteof the current cellCall route()
Run
afterRouteof all parents, starting with the oldestRun
afterRouteof the current cellCall addAllPorts() on the object, to place remaining Ports.
Run
beforePaintof all parents, starting with the oldestRun
beforePaintof the current cellCall paint() on the object
Run
afterPaintof all parents, starting with the oldestRun
afterPaintof the current cellAdd the object as a child of Design
Add to the static list of cells