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
LayoutCell
if it’s not specified. Incic-core/src/core/design.cpp
constructor 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
afterNew
of all parents, starting with the oldestRun
afterNew
of the current cellSet all properties, and run all custom functions on the object
Run
beforePlace
of all parents, starting with the oldestRun
beforePlace
of the current cellCall place() on the object
Run
afterPlace
of all parents, starting with the oldestRun
afterPlace
of the current cellRun
beforeRoute
of all parents, starting with the oldestRun
beforeRoute
of the current cellCall route()
Run
afterRoute
of all parents, starting with the oldestRun
afterRoute
of the current cellCall addAllPorts() on the object, to place remaining Ports.
Run
beforePaint
of all parents, starting with the oldestRun
beforePaint
of the current cellCall paint() on the object
Run
afterPaint
of all parents, starting with the oldestRun
afterPaint
of the current cellAdd the object as a child of Design
Add to the static list of cells