API

Main

Layer

class Layer

Defines a layer, data for this object is usually loaded from the “layers” section in the technology file

Public Types

enum MATERIAL_TYPE

Values:

enumerator diffusion
enumerator poly
enumerator metal
enumerator cut
enumerator metalres
enumerator other
enumerator marker
enumerator implant

Public Functions

Layer()

Public Members

QString name

Name of layer, for example “M1”.

int number

GDS layer number.

int datatype

GDS layer datatype.

QMap<QString, int> datatypes
MATERIAL_TYPE material

Type of material.

QString previous

Previous layer in routing stack, i.e CO for M1.

QString next

Next layer in routing stack, i.e VIA1 for M1.

QString pin

Name of pin layer for this layer, i.e. M1_pin.

QString res

Name of resistor layer for this layer, i.e. M1_res.

QString color

Color of this layer to use in GUI, QColor names can be used.

bool nofill

Fill rectangle of this layer in GUI.

bool visible

Whether this layer is visible in GUI.

Rules

class Rules : public QObject

Public Functions

Rules()
inline ~Rules()
Rules(const Rules&)
QList<Layer*> getConnectStack(QString layer1, QString layer2)
Device *getDevice(QString dev)
qreal get(QString layer, QString rule)
bool hasRule(QString layer, QString rule)
double spiceUnit()
QString layerToColor(QString name)
int layerToNumber(QString name)
int layerToDataType(QString name)
inline int gamma()
inline int grid()
void setRules(QJsonObject job)
Layer *getLayer(QString string)
inline QMap<QString, Layer*> layers()
bool isLayerBeforeLayer(QString layer1, QString layer2)
QString getNextLayer(QString lay)
QString getPreviousLayer(QString lay)
double toMicron(int val)
QString removeDataType(QString layer)
QString getDataType(QString layer)

Public Static Functions

static void loadRules(QString path)
static inline Rules *getRules()

Design

class Design : public cIcCore::Cell

Public Functions

Design()
bool read(QString filename)
bool readCells(QString filename)
inline QList<QString> cellNames()
cIcSpice::Subckt *getSpiceSubckt(QJsonObject jobj, QList<QJsonObject> *reverse_parents, QString name)
void runMethod(QJsonValue v, QMetaMethod m, Cell *c)
virtual QJsonObject toJson()
virtual void fromJson(QJsonObject o)
QJsonObject readJson(QString filename)
void readJsonFile(QString filename)
void writeJsonFile(QString filename, QJsonObject info)
void addIncludePath(QString path)
void setPrefix(QString prefix)
bool hasTopCells()

Console

class Console

Public Functions

Console(int argc, char *argv[])
~Console()
virtual void initialize(int argc, char *argv[])
virtual void initialize()
void addOption(Option *o)
Option *option(string name)

Basics

Point

class Point

Public Functions

inline Point()
inline Point(int xa, int ya)
inline void setPoint(Point p)
inline void setPoint(int xa, int ya)
inline void rotate(int org_x, int org_y, int angle)
inline void translate(int dx, int dy)
inline bool leftOf(const Point &p)
inline bool over(const Point &p)
inline int swapX(int x2)
inline int swapY(int y2)
inline QString toString()
inline bool operator==(Point p)

Public Members

int x
int y

Rect

class Rect : public QObject

Subclassed by cIcCore::Cell, cIcCore::Port, cIcCore::Text

Public Functions

Rect()
Rect(const Rect&)
~Rect()
explicit Rect(Rect *r)

Copy rectangle from pointer (r)

Rect(QString layer, int left, int bottom, int width, int height)
bool isHorizontal()
bool isVertical()
Rect *getCopy()

Return a copy of this rectangle, creates a new rectangle.

Rect *getCopy(QString layer)

Get a copy of this rectangle, but with in a different layer.

QString layer()

Name of GDS layer.

inline QString net()

Net name of this net.

inline void setNet(QString net)
inline Rules *getRules()

Get the cIcCore::Rules object.

inline int left()
inline int right()

x1

inline int top()

x2

inline int bottom()

y1

inline int width()

y2

inline int height()

x2 - x1

inline int centerX()

y2 - y1

inline int centerY()

x1 + (x2 - x1)/2

inline bool empty()

y1 + (y2 - y1)/2

inline int x1()

Is this rectangle empty, x1=x2=y1=y2.

inline int y1()
inline int x2()
inline int y2()
inline virtual void translate(int ax, int ay)

Move this rectangle by ax and ay.

inline virtual void moveTo(int x, int y)

Move this rectangle to x and y.

inline virtual void moveCenter(int x, int y)

Place center of this rectangel at x and y.

inline virtual void adjust(int dx)

Increase the size of this rectangle by dx on all sides.

inline virtual void adjust(int dx1, int dy1, int dx2, int dy2)
Rect *adjustedOnce(int xp1)

Get a rectangele where each side is moved by xp1. Useful for generating a rectangle to enclose this rectangle by a certain amount

virtual void mirrorX(int ax)

Mirror around ax, will send “updated()”.

virtual void mirrorY(int ay)

Mirror arround ay, will send “updated()”.

inline void setPoint1(int x1, int y1)
inline void setPoint2(int x2, int y2)
bool isRect()
bool isInstance()

Check if this is an cIcCore::Instance object.

bool isRoute()

Check if this is a cIcCore::Routeobject.

bool isCut()

Check if this is a cIcCore::Cut object.

bool isCell()

Check if this is a cIcCore::Cell object.

bool isLayoutCell()

Check if this is a cIcCore::LayoutCell object.

bool isPort()

Check if this is a cIcCore::Port object.

bool isText()

Check if this is a cIcCore::Text object.

bool abutsLeft(Rect *r)

Check if a rectangle is exactly to the left of of this rectangle.

bool abutsRight(Rect *r)

Check if a rectangle is exactly to the right of of this rectangle.

bool abutsTop(Rect *r)

Check if a rectangle is exactly to the top of of this rectangle.

bool abutsBottom(Rect*)

Check if a rectangle is exactly to the bottom of of this rectangle.

Rect *parent(Rect *rect = 0)

Get the rectangle of this.

int snap(int x)

Snap to grid, defult 5 ångstrøm.

virtual QString toString()

Convert a rectangle to a string that can be printed to console, useful for debug.

void rotate(int i)
virtual QJsonObject toJson()
virtual void fromJson(QJsonObject o)
void setPrefix(QString prefix)

Public Slots

void setLayer(QString layer)

Set GDS layer name.

inline void setLeft(int left)

Set the left coordinate (x1)

inline void setRight(int right)

Set the right coordinate (x2)

inline void setTop(int top)

Set the top coordinate (y2)

inline void setBottom(int bottom)

Set the bottom coordinate (y1)

inline void setWidth(int width)

Set width, moves x2.

inline void setHeight(int height)

Set height, moves y2.

inline void setRect(Rect rect)

Set coordinates based on rect.

inline void setRect(int x, int y, int width, int height)
inline void setRect(QString layer, int x, int y, int width, int height)

Signals

void updated()

Notify listeners when the rectangle has moved.

Public Static Functions

static QList<Rect*> sortLeftOnTop(QList<Rect*> rects)
static QList<Rect*> sortRightOnTop(QList<Rect*> rects)
static QList<Rect*> sortBottomOnTop(QList<Rect*> rects)
static QList<Rect*> sortTopOnTop(QList<Rect*> rects)
static Rect getScaled(Rect *r, int unit)
static Rect *getHorizontalRectangleFromTo(QString layer, int x1, int x2, int y, int height)
static Rect *getVerticalRectangleFromTo(QString layer, int x, int y1, int y2, int width)

Port

class Port : public cIcCore::Rect

Port is a net name attached to a rectangle

Subclassed by cIcCore::InstancePort

Public Functions

Port()
~Port()
explicit Port(QString name)
QString name()

Net name.

void setName(QString name)
QString pinLayer()
virtual void set(Rect *r)
virtual Rect *get()
virtual Rect *get(QString layer)
virtual QList<Rect*> getAll(QString layer)
virtual void mirrorX(int ay) override

Mirror around ax, will send “updated()”.

virtual void mirrorY(int ax) override

Mirror arround ay, will send “updated()”.

virtual QString toString()

Convert a rectangle to a string that can be printed to console, useful for debug.

void add(Rect *r)
inline bool isInstancePort()
virtual QJsonObject toJson() override
virtual void fromJson(QJsonObject o) override

Public Members

bool spicePort

Public Slots

void updateRect()

InstancePort

class InstancePort : public cIcCore::Port

Public Functions

InstancePort(QString name, Port *p, Rect *parent)
~InstancePort()
virtual void mirrorX(int ay) override

Mirror around ax, will send “updated()”.

virtual void mirrorY(int ax) override

Mirror arround ay, will send “updated()”.

inline Rect *parent()
QString childName()

Text

class Text : public cIcCore::Rect

Text is just a text

Public Functions

Text()
~Text()
explicit Text(QString name)
QString name()

Net name.

void setName(QString name)
virtual QJsonObject toJson() override
virtual void fromJson(QJsonObject o) override

Basic Cells

Cell

class Cell : public cIcCore::Rect

Base class for all cells, usually inherited to provide specialization. The methods of this class is called in the following order when a cell is created: place(); route(); paint();

Subclassed by cIcCore::Cut, cIcCore::Design, cIcCore::Guard, cIcCore::Instance, cIcCore::LayoutCell, cIcCore::PatternTile, cIcCore::Route, cIcCore::RouteRing

Public Functions

Cell()
Cell(const Cell&)
~Cell()
Rect *getRect(QString layer)

Find the first rectangle in this cell that uses layer.

virtual void add(Rect *rect)

Add a rectangle to the cell, hooks updated() of the child to updateBoundingRect.

virtual void add(QList<Rect*> rects)
virtual void translate(int dx, int dy) override

Move this cell, and all children by dx and dy.

virtual void mirrorX(int ax) override

Mirror this cell, and all children around ax.

virtual void mirrorY(int ay) override

Mirror this cell, and all children around ay.

virtual void moveTo(int ax, int ay) override

Move this cell, and all children to ax and ay.

virtual void moveCenter(int ax, int ay) override

Center this cell, and all children on ax and ay.

void meta(QJsonObject obj)
void boundaryIgnoreRouting(QJsonValue obj)

Center this cell, and all children on ax and ay.

void setBoundaryIgnoreRouting(bool bir)
bool boundaryIgnoreRouting()
void addPort(QString name, Rect *r)

Shortcut for adding ports.

void mirrorCenterX()

Mirror this cell, and all children around horizontal center point (basically flip horizontal)

void mirrorCenterY()
virtual Rect calcBoundingRect()

Calculate the extent of this cell. Should be overriden by children.

virtual QString toString() override

Convert cell to a human readable format, useful for debug.

inline bool isPhysicalOnly()

Mark as a physcial only cell.

inline bool setPhysicalOnly(bool val)
inline QString name()

Name of this cell.

inline QString setName(QString val)
inline void setLibCell(bool isLibCell)
inline void setLibPath(QString path)
inline QString libPath()
inline void setUsed(bool isUsed)
inline bool isUsed()
Port *getPort(QString name)

Get the port linked to net name (name)

Port *getCellPort(QString name)
QList<Port*> ports()

Get all ports on this cell.

QMap<QString, QList<Port*>> allports()
QList<QString> allPortNames()
Port *updatePort(QString name, Rect *r)

Update rectangle of port, if port does not exist a new one is created

inline cIcSpice::Subckt *subckt()

Spice subcircuit object.

inline cIcSpice::Subckt *setSubckt(cIcSpice::Subckt *val)
inline QList<Rect*> children()

Get list of all children.

bool isASpicePort(QString name)
virtual void place()

Place children.

virtual void route()

Route children.

virtual void paint()

Paint children, useful with a method after route.

virtual void addAllPorts()

Automatically add remaing ports.

virtual QList<Rect*> findRectanglesByRegex(QString regex, QString layer)

Find all rectangles by regular expression.

virtual void findRectangles(QList<Rect*> &rects, QString name, QString layer)
virtual QList<Rect*> findAllRectangles(QString regex, QString layer)
virtual QJsonObject toJson() override
virtual void fromJson(QJsonObject o) override
virtual Rect *cellFromJson(QJsonObject co)
QList<Rect*> getChildren(QString type)
void addEnclosingLayers(QList<QString> layers)
virtual void updateUsedChildren()

Public Slots

void updateBoundingRect()

Properties

bool physicalOnly

Mark a cell as physical only.

Accessors:\n isPhysicalOnly(), setPhysicalOnly()

Public Static Functions

static Rect calcBoundingRect(QList<Rect*> children)
static Rect calcBoundingRect(QList<Rect*> children, bool ignoreBoundaryRouting)
static bool isEmpty(Cell *c)
static inline bool hasCell(QString cell)

Check if this cell contains a cell with name cell.

static inline Cell *getCell(QString cell)

Get a named cell, returns empty cell if it does not exist, so you should check that the cell exists in this cell first

static inline QList<Cell*> getAllCells()

Get a list of all cells in this design.

static inline Cell *addCell(QString cell, Cell *c)

Add a cell to the list of all cells.

static inline Cell *addCell(Cell *c)

Add a cell, and use the cell->name() as key.

Cut

class Cut : public cIcCore::Cell

Public Functions

Cut(QString layer1, QString layer2, int horizontal_cuts, int vertical_cuts)
Cut(QString layer1, QString layer2, Rect *r)
~Cut()

Public Static Functions

static QString makeName(QString layer1, QString layer2, int horizontal_cuts, int vertical_cuts)
static Instance *getInstance(QString layer1, QString layer2, int horizontal_cuts, int vertical_cuts)
static QList<Rect*> getCutsForRects(QString layer1, QList<Rect*>, int horizontal_cuts, int vertical_cuts)
static QList<Rect*> getCutsForRects(QString layer1, QList<Rect*>, int horizontal_cuts, int vertical_cuts, bool alignLeft)
static QList<Rect*> getVerticalFillCutsForRects(QString layer1, QList<Rect*> rects, int horizontal_cuts)
static QList<Cut*> getCuts()

Instance

class Instance : public cIcCore::Cell

Subclassed by cIcCore::InstanceCut

Public Functions

Instance()
Instance(const Instance&)
~Instance()
inline Cell *cell()
inline QString instanceName()
inline QString id()
virtual Rect calcBoundingRect() override

Calculate the extent of this cell. Should be overriden by children.

inline QString angle()
void setAngle(QString angle)
inline void setCell(Cell *cell)
inline cIcSpice::SubcktInstance *subcktInstance()
void setSubcktInstance(cIcSpice::SubcktInstance *inst)
virtual QList<Rect*> findRectanglesByRegex(QString regex, QString layer) override

Find all rectangles by regular expression.

QList<Rect*> findRectanglesByNode(QString node, QString filterChild)
virtual QString toString() override

Convert cell to a human readable format, useful for debug.

void transform(Rect *r)
Rect *getRect(QString layer)
Point *getCellPoint()
virtual QJsonObject toJson() override
virtual void fromJson(QJsonObject o) override
void setCell(QString cell)
virtual void updateUsedChildren() override

Public Static Functions

static Instance *getInstance(QString cell)

InstanceCut

class InstanceCut : public cIcCore::Instance

Public Functions

inline InstanceCut()
inline explicit InstanceCut(const Instance &inst)
inline ~InstanceCut()

Pattern Cells

PatternTile

class PatternTile : public cIcCore::Cell

Subclassed by cIcCore::PatternCapacitor, cIcCore::PatternHighResistor, cIcCore::PatternResistor, cIcCore::PatternTransistor, cIcCore::ResistorCell

Public Functions

PatternTile()
PatternTile(const PatternTile&)
~PatternTile()
void fillCoordinatesFromString(QJsonArray ar)

fillCoordinatesFromString

void verticalMultiplyVector(QJsonArray ar)

verticalMultiplyVector

EXPERIMENTAL! Vector length must be the same length as the number of rows in fillCoordinatesFromString. Multiplies the height of a cell with the number in the vector multiplier

void getRuleForHorizontalGrid(QJsonArray ar)
void getRuleForVerticalGrid(QJsonArray ar)
void copyColumn(QJsonObject obj)

Copy a column set of a fillCoordinateFromStrings

A CopyColumn object consists of the following { “count” : int, “offset” : int, “length” : int, [“position” : int] }

  • count is the number of times to copy the column set

  • offset is the column set index from left edge of string

  • length is the length of the column set

  • position is optional, and if not set will be equal to offset. If position is given, then the copies of a column is inserted at that point

Parameters:

QJsonObject – Array of CopyColumn objects

void copyRow(QJsonObject obj)

Copy a row set of a fillCoordinateFromStrings

A CopyRows object consists of the following { “count” : int, “offset” : int, “length” : int, [“position” : int] }

  • count is the number of times to copy the row set

  • offset is the row set index from top edge of string

  • length is the length of the row set

  • position is optional, and if not set will be equal to offset. If position is given, then the copies of a row set is inserted at that point

Parameters:

QJsonObject – Array of CopyRows objects

void copyLayer(QJsonArray ar)
void addEnclosure(QJsonArray ar)
void addEnclosureByRectangle(QJsonArray ar)
void addEnclosuresByRectangle(QJsonArray ar)
virtual QMap<QString, QVariant> initFillCoordinates()
inline virtual void onFillCoordinate(QChar, QString, int, int, QMap<QString, QVariant>&)
virtual void onPaintEnclosure(Rect*)
inline virtual void endFillCoordinate(QMap<QString, QVariant>&)
inline virtual void paintRect(Rect*, QChar, int, int)
virtual void paint() override

Paint children, useful with a method after route.

virtual Rect calcBoundingRect()

Calculate the extent of this cell. Should be overriden by children.

inline qreal minPolyLength()
inline qreal setMinPolyLength(qreal val)
inline bool metalUnderMetalRes()
inline void setMetalUnderMetalRes(bool val)
inline qreal verticalGrid()
inline qreal setVerticalGrid(qreal val)
inline double verticalGridMultiplier()
inline double setVerticalGridMultiplier(double val)
inline int horizontalGrid()
inline int setHorizontalGrid(int val)
inline double horizontalGridMultiplier()
inline double setHorizontalGridMultiplier(double val)
inline qreal widthoffset()
inline qreal setWidthoffset(qreal widthoffset)
inline qreal heightoffset()
inline qreal setHeightoffset(qreal heightoffset)
inline qreal xoffset()
inline qreal setXoffset(qreal xoffset)
inline int polyWidthAdjust()
inline int setPolyWidthAdjust(int val)
inline qreal yoffset()
inline qreal setYoffset(qreal yoffset)
inline int mirrorPatternString()
inline int setMirrorPatternString(int mirrorPatternString)

Public Members

QMap<QChar, PatternData*> Pattern

Properties

qreal minPolyLength

minimum poly length

Accessors:\n minPolyLength(), setMinPolyLength()

qreal widthoffset

offset to add to the width

Accessors:\n widthoffseth(), setWidthOffset()

qreal heightoffset

offset to add to the width

Accessors:\n height(), setHeightOffset()

qreal verticalGrid

Override vertical grid.

Accessors:\n verticalGrid(), setVerticalGrid()

qreal horizontalGrid

Override horizontal grid.

Accessors:\n horizontalGrid(), setHorizontalGrid()

double verticalGridMultiplier

multiply vertical grid by an number

Accessors:\n verticalGridMultiplier(), setVerticalGridMultiplier()

double horizontalGridMultiplier

multiply horizontal grid by an number

Accessors:\n horizontalGridMultiplier(), setHorizontalGridMultiplier()

qreal yoffset

add offset to Y origin coordinate

Accessors:\n yoffset(), setYoffset()

qreal xoffset

add offset to X origin coordinate

Accessors:\n xoffset(), setXoffset()

int mirrorPatternString

Mirror the pattern string after creation.

Accessors:\n mirrorPatternString(), setMirrorPatternString()

int polyWidthAdjust

Adjust the poly width.

Accessors:\n polyWidthAdjust(), setPolyWidthAdjust()

bool metalUnderMetalRes

Add metal under metal-resistor layer, depends on technology.

Accessors:\n metalUnderMetalRes(), setMetalUnderMetalRes()

Public Static Attributes

static QMap<QString, QStringList> Patterns

PatternResistor

class PatternResistor : public cIcCore::PatternTile

Public Functions

virtual void paintRect(Rect*, QChar, int, int)
PatternResistor()
PatternResistor(const PatternResistor &mos)
~PatternResistor()
virtual QMap<QString, QVariant> initFillCoordinates()
virtual void onFillCoordinate(QChar c, QString layer, int x, int y, QMap<QString, QVariant> &data)
virtual void endFillCoordinate(QMap<QString, QVariant> &data)

PatternHighResistor

class PatternHighResistor : public cIcCore::PatternTile

Public Functions

virtual void paintRect(Rect*, QChar, int, int)
PatternHighResistor()
PatternHighResistor(const PatternHighResistor &mos)
~PatternHighResistor()
virtual void onFillCoordinate(QChar c, QString layer, int x, int y, QMap<QString, QVariant> &data)
virtual void onPaintEnclosure(Rect *r)
virtual void endFillCoordinate(QMap<QString, QVariant> &data)

PatternCapacitor

class PatternCapacitor : public cIcCore::PatternTile

Public Functions

virtual void paintRect(Rect*, QChar, int, int)
PatternCapacitor()
~PatternCapacitor()
virtual void onPaintEnd()
virtual QJsonObject toJson()
virtual void fromJson(QJsonObject o)
virtual void onFillCoordinate(QChar c, QString layer, int x, int y, QMap<QString, QVariant> &data)

PatternTransistor

class PatternTransistor : public cIcCore::PatternTile

Public Functions

PatternTransistor()
~PatternTransistor()
inline QString mosType()
inline void setMosType(QString mosType)
virtual QMap<QString, QVariant> initFillCoordinates()
virtual void onFillCoordinate(QChar c, QString layer, int x, int y, QMap<QString, QVariant> &data)
virtual void endFillCoordinate(QMap<QString, QVariant> &data)
virtual void paintRect(Rect *r, QChar c, int x, int y)
virtual QJsonObject toJson()
virtual void fromJson(QJsonObject o)

Properties

QString mosType

Route

Route

class Route : public cIcCore::Cell

Public Functions

Route(QString net, QString layer, QList<Rect*> start, QList<Rect*> stop, QString options, QString routeType)
Route(const Route&)
~Route()
virtual void addStartCuts()
virtual void addEndCuts()
virtual QList<Rect*> addCuts(QList<Rect*>, QList<Rect*>&, int cuts_, int vcuts_)
virtual void route() override

Route children.

void routeUHorizontal()
void addVertical(int x)
void applyOffset(int width, Rect *start, Offset offset)
void hasMatch(QString options)
int getIntegerFromMatch(QString regex, QString options, int defaultValue)
QString getQStringFromMatch(QString regex, QString options, QString defaultValue)

Guard

class Guard : public cIcCore::Cell

Public Functions

Guard(Rect *r, QList<QString> layers)
~Guard()

Graph

class Graph

Public Functions

inline void append(Port *p)
QJsonObject toJson()
inline QList<Rect*> getRectangles(QString excludeInstances, QString includeInstances, QString layer)

Public Members

QList<Port*> ports
QString name

RouteRing

class RouteRing : public cIcCore::Cell

Public Functions

RouteRing()
RouteRing(QString layer, QString name, Rect *size, QString location, int xgrid, int ygrid, int width)
~RouteRing()
void addRoute(Rect *r, QString layer, QString options, QString location)
void trimRouteRing(QString location, QString whichEndToTrim)
virtual void translate(int dx, int dy) override

Move this cell, and all children by dx and dy.

virtual void moveTo(int ax, int ay) override

Move this cell, and all children to ax and ay.

Rect *get(QString location)
Rect *getDefault()
Rect *getPointer(QString location)

Layout Cells

LayoutCell

class LayoutCell : public cIcCore::Cell

Subclassed by cIcCells::CDAC, cIcCells::CapCell, cIcCells::CapCellV2, cIcCells::PhCapCell, cIcCells::SAR, cIcCore::LayoutRotateCell

Public Functions

LayoutCell()
LayoutCell(const LayoutCell&)
~LayoutCell()
void setYoffsetHalf(QJsonValue obj)
void noPowerRoute(QJsonValue obj)
void placeHorizontal(QJsonValue obj)
void addDirectedRoute(QJsonArray obj)
void addConnectivityRoute(QJsonArray obj)
void addPortOnRect(QJsonArray obj)
void addVia(QJsonArray obj)
void addConnectivityVia(QJsonArray obj)
void addPortVia(QJsonArray obj)
void addVerticalRect(QJsonArray obj)
void addRouteRing(QJsonArray obj)
void addPowerRing(QJsonArray obj)
void addRouteConnection(QJsonArray obj)
void addPowerConnection(QJsonArray obj)
void trimRouteRing(QJsonArray obj)
void addRectangle(QJsonArray obj)
void addRouteHorizontalRect(QString layer, QString rectpath, int x, QString name)
void addRouteHorizontalRect(QJsonArray obj)
void addGuard(QJsonArray obj)
void addHorizontalRect(QJsonArray obj)
void alternateGroup(QJsonValue obj)
void resetOrigin(QJsonValue obj)
void addPortOnEdge(QJsonArray obj)
void addPortOnEdge(QString layer, QString port, QString location, QString routeType, QString options)
void setSpiceParam(QJsonArray obj)
void addGuard(QString port, double gridMultiplier, QList<QString> layers)
QList<Graph*> getNodeGraphs(QString regex)
void noPowerRoute()
Instance *addInstance(cIcSpice::SubcktInstance *ckt, int x, int y)
void addRectangle(QString layer, int x1, int y1, int width, int height, QString angle)
void addConnectivityRoute(QString layer, QString regex, QString routeType, QString options, QString cuts, QString excludeInstances, QString includeInstances)
void trimRouteRing(QString path, QString location, QString whichEndToTrim)
void addRouteRing(QString layer, QString name, QString location, int widthmult, int spacemult)
void addRouteRing(QString layer, QString name, QString location, int widthmult, int spacemult, bool useGridForSpace)
void addPowerRing(QString layer, QString name, QString location, int widthmult, int spacemult)
void addPowerConnection(QString name, QString includeInstances, QString location)
void addRouteConnection(QString path, QString includeInstances, QString layer, QString location, QString options)
void addRouteConnection(QString path, QString includeInstances, QString layer, QString location, QString options, QString routeTypeOverride)
Instance *getInstanceFromInstanceName(QString instanceName)
virtual void place() override

Place children.

virtual void route() override

Route children.

virtual void addAllPorts() override

Automatically add remaing ports.

virtual void routePower()
virtual void paint() override

Paint children, useful with a method after route.

QList<QString> nodeGraphList()
QStringList expandBus(QString name)
virtual QList<Rect*> findRectanglesByNode(QString node, QString filterChild, QString filterInstance)
virtual void fromJson(QJsonObject obj) override
virtual Rect *cellFromJson(QJsonObject co) override
virtual QJsonObject toJson() override
void addPowerRoute(QString net, QString excludeInstances)

LayoutRotateCell

class LayoutRotateCell : public cIcCore::LayoutCell

Public Functions

LayoutRotateCell()
~LayoutRotateCell()
void rotateAngle(QJsonValue s)
void rotateAngle(QString s)
virtual void place() override

Place children.

virtual void paint() override

Paint children, useful with a method after route.

Complex Cells

CapCell

class CapCell : public cIcCore::LayoutCell

Public Functions

virtual void place()

Place children.

virtual Rect calcBoundingRect()

Calculate the extent of this cell. Should be overriden by children.

void addContacts(QString name, QString node, int y, QList<int> array, Rect *r)
Rect *getAvssConnectRect(Rect *rect)
void usem3(QJsonValue obj)

Use Metal 3.

void usem5(QJsonValue obj)

Use Metal 5 shield.

void heightIncreaseMult(QJsonValue obj)

Increase multiplier height.

CDAC

class CDAC : public cIcCore::LayoutCell

Public Functions

virtual void place()

Place children.

virtual void route()

Route children.

virtual void paint()

Paint children, useful with a method after route.

SAR

class SAR : public cIcCore::LayoutCell

Public Functions

virtual void place()

Place children.

virtual void route()

Route children.

void usem5(QJsonValue obj)

Use Metal 5 shield.

int getCellWidth(SARgroup groups, QString group)
cIcCore::Instance *placeAlternateMirror(SARgroup groups, QString group, int i, int x, int y, int xoffset)
int addSarRouting(int y, int msw, int mw)

Public Static Functions

static bool sortGraph(cIcCore::Graph *a, cIcCore::Graph *b)

Spice

SpiceObject

class SpiceObject : public QObject

Subclassed by cIcSpice::SpiceDevice, cIcSpice::Subckt, cIcSpice::SubcktInstance

Public Functions

SpiceObject()
SpiceObject(const SpiceObject&)
~SpiceObject()
QString name()
virtual QJsonObject toJson()
void fromJson(QJsonObject o)
virtual QString setName(QString val)
int lineNumber()
int setLineNumber(int val)
QList<QString> spiceStr()
QList<QString> setSpiceStr(QList<QString> val)
QStringList nodes()
QStringList setNodes(QStringList val)
QVariantMap properties()
QString spiceType()
void setSpiceType(QString type)
QString deviceName()
void setDeviceName(QString name)
virtual QString toSpice(QString instance, QStringList nodes)
virtual void setProperty(QString key, int val)
virtual void setProperty(QString key, QString val)
virtual void setProperty(QString key, double val)
virtual bool hasProperty(QString key)
virtual QString getPropertyString(QString key)
void setPrefix(QString prefix)

Properties

QString name
QStringList spiceStr
QStringList nodes
int lineNumber

SpiceDevice

class SpiceDevice : public cIcSpice::SpiceObject

Subclassed by cIcSpice::Capacitor, cIcSpice::Mosfet, cIcSpice::Resistor

Public Functions

SpiceDevice()
SpiceDevice(const SpiceDevice&)
~SpiceDevice()
virtual QJsonObject toJson()
virtual QString toSpice(QString instance, QStringList nodes)
virtual QString toSpice()
virtual void fromJson(QJsonObject o)

Mosfet

class Mosfet : public cIcSpice::SpiceDevice

Public Functions

Mosfet()
Mosfet(const Mosfet &mos)
~Mosfet()
virtual QString toSpice(QString instance, QStringList nodes)
virtual QJsonObject toJson()
virtual void fromJson(QJsonObject o)
virtual QString toSpice()

Resistor

class Resistor : public cIcSpice::SpiceDevice

Public Functions

Resistor(QStringList n)
Resistor()
void init(QStringList n)
Resistor(const Resistor &mos)
~Resistor()
virtual QString toSpice(QString instance, QStringList nodes)
virtual QJsonObject toJson()
virtual void fromJson(QJsonObject o)
virtual QString toSpice()

Public Members

double width

Capacitor

class Capacitor : public cIcSpice::SpiceDevice

Public Functions

Capacitor(QStringList n)
Capacitor()
void init(QStringList n)
Capacitor(const Capacitor &mos)
~Capacitor()
virtual QString toSpice(QString instance, QStringList nodes)
virtual QJsonObject toJson()

Subckt

class Subckt : public cIcSpice::SpiceObject

Public Functions

Subckt()
Subckt(QList<QString> buffer)
Subckt(const Subckt&)
~Subckt()
virtual QJsonObject toJson()
virtual void fromJson(QJsonObject o)
void parse(QList<QString> buffer, int line)
inline QList<SubcktInstance*> instances()
inline QList<SpiceDevice*> devices()
inline void setLibPath(QString path)
inline QString libPath()
inline void add(SubcktInstance *s)
inline void add(SpiceDevice *s)
SubcktInstance *getInstance(QString name)
inline void addSubckt()

Properties

QString name

Public Static Functions

static Subckt *getInstanceSubckt(SubcktInstance*)

SubcktInstance

class SubcktInstance : public cIcSpice::SpiceObject

Public Functions

SubcktInstance()
SubcktInstance(QString buffer)
SubcktInstance(const SubcktInstance&)
~SubcktInstance()
virtual QString setName(QString val)
inline QString subcktName()
inline QString setSubcktName(QString val)
inline QString groupName()
inline QString groupTag()
void parse(QString buffer, int line_number)
virtual QJsonObject toJson()
virtual void fromJson(QJsonObject o)

Properties

QString subcktName

SpiceParser

class SpiceParser : public QObject

Public Functions

SpiceParser()
SpiceParser(const SpiceParser&)
~SpiceParser()
void parseFile(QString filename)
inline QMap<QString, Subckt*> subckt()
inline Subckt *getSubckt(QString name)
void parseSubckt(int line_number, QList<QString> subckt_buffer)