maxSizeY: INT ← MAX [CD.InterestSize[left].y, CD.InterestSize[right].y];
extendedLeftCT: CellType ← CoreClasses.CreateIdentity[leftCT];
extendedLeft: CD.Object;
PWCore.SetLayout[extendedLeftCT, $Stretch, $StretchData, NEW [StretchDataRec ← [inX: FALSE, size: maxSizeY, layer: "met"]]];
extendedLeft ← PWCore.Layout[extendedLeftCT];
TestX:
PROC
RETURNS [channelCT: CellType] = {
design: CD.Design ← PW.OpenDesign["PWCoreRouteTest"];
left: CD.Object ← PW.Get[design, "left.mask"];
right: CD.Object ← PW.Get[design, "right.mask"];
leftCT: CellType ← PWCore.FromLayoutWithoutPublic[left];
rightCT: CellType ← PWCore.FromLayoutWithoutPublic[right];
public: Wire ← CoreCreate.Wires["middlea", "x", "y", "z", "bar", "left", "higha", "highb"];
onlyInternal: Wire ← CoreCreate.Wires["middleb", "green", "red", "ring", "foo"];
channelCT ← CoreCreate.Cell[
public: public,
onlyInternal: onlyInternal,
instances:
LIST [
CoreCreate.Instance[leftCT, ["righta", "middlea"], ["rightb", "middleb"]],
CoreCreate.Instance[rightCT, ["righta", "middlea"], ["rightb", "middleb"]]
],
name: "ChannelInX"
];
PWCore.SetLayout[channelCT, $Channel, $ChannelData,
NEW [ChannelDataRec ← [
inX: TRUE,
extend: TRUE,
bottomOrLeftWires: LIST [public[0], public[1], public[2], public[3]],
topOrRightWires: LIST[public[0], public[1], public[2], public[3]],
trunkLayer: "metal",
branchLayer: "metal2"
]]];
};
TestY:
PROC
RETURNS [channelCT: CellType] = {
design: CD.Design ← PW.OpenDesign["PWCoreRouteTest"];
left: CD.Object ← PW.Get[design, "rleft.mask"];
right: CD.Object ← PW.Get[design, "rright.mask"];
leftCT: CellType ← PWCore.FromLayoutWithoutPublic[left];
rightCT: CellType ← PWCore.FromLayoutWithoutPublic[right];
public: Wire ← CoreCreate.Wires["middlea", "x", "y", "z", "bar", "left", "higha", "highb"];
onlyInternal: Wire ← CoreCreate.Wires["middleb", "green", "red", "ring", "foo"];
channelCT ← CoreCreate.Cell[
public: public,
onlyInternal: onlyInternal,
instances:
LIST [
CoreCreate.Instance[rightCT, ["righta", "middlea"], ["rightb", "middleb"]],
CoreCreate.Instance[leftCT, ["righta", "middlea"], ["rightb", "middleb"]]
],
name: "ChannelInY"
];
PWCore.SetLayout[channelCT, $Channel, $ChannelData,
NEW [ChannelDataRec ← [
inX: FALSE,
extend: TRUE,
extendTopOrRight: FALSE,
bottomOrLeftWires: LIST [public[0], public[1], public[2], public[3]],
topOrRightWires: LIST[public[0], public[1], public[2], public[3]],
trunkLayer: "metal",
branchLayer: "metal2"
]]];
};