;;; PCell Designer File (format version 2.2)
;;; File-out of the PCell Designer pcell "NmosDemo24"/"alignTwoBlocks"/"layout"
(pcdPcell
;; Mixins
?mixins
nil
;; Create CDF?
?createCDF
t
;; Reference cell for CDF
?referenceCDF
nil
;; Main points
?mainPoints
nil
;; Initial size
?initSize
nil
;; Device Variables
?devVars
nil
;; Device Variables visible to the commands
?guiVisibleDevVarNames
nil
;; Methods used as commands
?methodCommands
nil
;; Methods available as AppCell editors
?appCellEditors
((nil
commandName AlignBoundaries
parameters nil
metaData (nil
formCaption ""))
)
;; PCell and CDF Parameters
?classEditorChanges
()
;; Simulation Information
?simulation
(simulation)
;; Source Cell View
?sourceCellView
("NmosDemo24" "alignTwoBlocks" "layout")
;; Last Edited with PCell Designer Version
?pcdVersion
"2-5-21"
;; Method definitions
?methods
(
(newCommand command (newCommand
?name AlignBoundaries
?commandClass pcmdCommand
?category "MyAppCells"
?help ""
?parameters nil)
body (
(count
name (lvalue "numObjects" ?valuep t ?requiredp t ?isExpression nil ?keyword nil)
source (geo (geo type "Expression" points nil group "" name nil net nil expression (append (selected))) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword t))
(unless
condition (string "numObjects==2" ?valuep t ?requiredp t ?isExpression t ?keyword nil ?help "The condition to check.")
else
(body (
(error
condition (string "t" ?valuep t ?requiredp t ?isExpression t ?keyword t ?help "The condition for generating the error.")
style (enumeration "error" ?choices ("error_marker" "warning_marker" "error") ?allowOther nil ?valuep t ?requiredp t ?isExpression nil ?keyword t ?help "The kind of error to generate.")
message (string "Must only have two objects selected" ?valuep t ?requiredp t ?isExpression nil ?keyword t ?help "The error message to display."))
)
?valuep t
?requiredp t
?isExpression t
?keyword nil
))
(set
settings (settings (("second" "nil" ?alert nil ?comment "" ?disabled nil)) ?valuep t ?requiredp t ?isExpression nil ?keyword nil ?help "The name/value pairs to set."))
(each
name (binding "obj" ?valuep t ?requiredp t ?isExpression nil ?keyword nil ?help "Each time the body is executed, name will be set to a single result from source. name is only visible within the body.")
source (geo (geo type "Expression" points nil group "" name nil net nil expression (append (selected))) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword nil ?help "The geometry query go loop through.")
body
(body (
(set
settings (settings (("first" "second" ?alert nil ?comment "" ?disabled nil) ("second" "obj" ?alert nil ?comment "" ?disabled nil)) ?valuep t ?requiredp t ?isExpression nil ?keyword nil ?help "The name/value pairs to set."))
)
?valuep t
?requiredp t
?isExpression t
?keyword nil
)
style (each_style items ?valuep t ?requiredp t ?isExpression nil ?keyword t ?help "When looping over a set of shapes, controls whether the body is executed once for every shape, for every edge in every shape, or for every corner in every shape. Shapes are processed clockwise."))
(distance
?comment "Measure distances of bottom of one object to top of the other"
name (lvalue "firstBotToTop" ?valuep t ?requiredp nil ?isExpression nil ?keyword nil ?help "The shortest distance of those measured.")
from (geo (geo type "Expression" points nil group "" name "first" net nil expression (append (bbox (points (name "first"))))) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword nil ?help "One or more points, outlines, or shapes.")
from_handle (handle (edge south) ?valuep t ?requiredp nil ?isExpression nil ?keyword t ?help "Handle at the source shape for the measurement.")
to (geo (geo type "Expression" points nil group "" name "second" net nil expression (append (bbox (points (name "second"))))) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword nil ?help "One or more points, outlines, or shapes.")
to_handle (handle (edge north) ?valuep t ?requiredp nil ?isExpression nil ?keyword t ?help "Handle for the measurement target.")
result_type (distance_type y_distance ?valuep t ?requiredp t ?isExpression nil ?keyword nil ?help "The format to return the disantce in.")
body
(body (
)
?valuep t
?requiredp t
?isExpression t
?keyword nil
))
(distance
name (lvalue "secondBotToTop" ?valuep t ?requiredp nil ?isExpression nil ?keyword nil ?help "The shortest distance of those measured.")
from (geo (geo type "Expression" points nil group "" name "second" net nil expression (append (bbox (points (name "second"))))) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword nil ?help "One or more points, outlines, or shapes.")
from_handle (handle (edge south) ?valuep t ?requiredp nil ?isExpression nil ?keyword t ?help "Handle at the source shape for the measurement.")
to (geo (geo type "Expression" points nil group "" name "first" net nil expression (append (bbox (points (name "first"))))) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword nil ?help "One or more points, outlines, or shapes.")
to_handle (handle (edge north) ?valuep t ?requiredp nil ?isExpression nil ?keyword t ?help "Handle for the measurement target.")
result_type (distance_type y_distance ?valuep t ?requiredp t ?isExpression nil ?keyword nil ?help "The format to return the disantce in.")
body
(body (
)
?valuep t
?requiredp t
?isExpression t
?keyword nil
))
(if
?comment "Depending which distance is the shorter, align the second to the first appropriately"
condition (string "abs(firstBotToTop)libName" "\"blockwithpr\"" "\"layout\"") ?valuep t ?requiredp t ?isExpression t ?keyword nil ?help "The PCell master or standard cell view to make an instance of.")
source (geo (geo type "Points" points ((0 0))) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword nil ?help "The origins of the instances to create.")
inst_name (string "" ?valuep t ?requiredp nil ?isExpression nil ?keyword t ?help "If given, the instance name. If ommitted, the instances will be named automatically.")
array (sexp "(1 1)" ?valuep nil ?requiredp nil ?isExpression nil ?keyword t ?help "If given, create a mosaic of the requested number of columns and rows.")
dx (float "0.0" ?valuep nil ?requiredp nil ?isExpression t ?keyword t ?help "When creating a mosaic, the x spacing. May be omitted.")
dy (float "0.0" ?valuep nil ?requiredp nil ?isExpression t ?keyword t ?help "When creating a mosaic, the x spacing. May be omitted.")
copy_terminals (boolean nil ?valuep t ?requiredp t ?isExpression nil ?keyword t ?help "If true, all terminals will be copied up to the current instance: the pin figures will be copied, on pins of the same name, on terminals of the same name.")
transform (transformation ((2.695 -1.375) "R0" 1.0) ?valuep t ?requiredp t ?isExpression t ?keyword t ?help "Each origin point given in source is transformed by this transform; if there is an active current transform, this is taken into account.")
user_edits (sexp nil ?valuep t ?requiredp t ?isExpression t ?keyword t)
param_whitelist (sexp nil ?valuep nil ?requiredp nil ?isExpression t ?keyword t)
param_blacklist (sexp nil ?valuep nil ?requiredp nil ?isExpression t ?keyword t)
edit_master (boolean nil ?valuep t ?requiredp t ?isExpression nil ?keyword t)
edit_transform (boolean t ?valuep t ?requiredp t ?isExpression nil ?keyword t)
parameters (pcell_params (nil nil) ?valuep t ?requiredp t ?isExpression t ?keyword t ?help "Name-value pairs corresponding to the PCell parameters. To use a PCell's CDF interface, use the edit parameters
command instead."))
(instance
name (lvalue "" ?valuep t ?requiredp nil ?isExpression nil ?keyword nil ?help "The created instances, if any.")
master (master ("pcell->libName" "\"blockwithpr\"" "\"layoutTwo\"") ?valuep t ?requiredp t ?isExpression t ?keyword nil ?help "The PCell master or standard cell view to make an instance of.")
source (geo (geo type "Points" points ((0 0))) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword nil ?help "The origins of the instances to create.")
inst_name (string "" ?valuep t ?requiredp nil ?isExpression nil ?keyword t ?help "If given, the instance name. If ommitted, the instances will be named automatically.")
array (sexp "(1 1)" ?valuep nil ?requiredp nil ?isExpression nil ?keyword t ?help "If given, create a mosaic of the requested number of columns and rows.")
dx (float "0.0" ?valuep nil ?requiredp nil ?isExpression t ?keyword t ?help "When creating a mosaic, the x spacing. May be omitted.")
dy (float "0.0" ?valuep nil ?requiredp nil ?isExpression t ?keyword t ?help "When creating a mosaic, the x spacing. May be omitted.")
copy_terminals (boolean nil ?valuep t ?requiredp t ?isExpression nil ?keyword t ?help "If true, all terminals will be copied up to the current instance: the pin figures will be copied, on pins of the same name, on terminals of the same name.")
transform (transformation ((10.48 5.39) "R0" 1.0) ?valuep t ?requiredp t ?isExpression t ?keyword t ?help "Each origin point given in source is transformed by this transform; if there is an active current transform, this is taken into account.")
user_edits (sexp nil ?valuep t ?requiredp t ?isExpression t ?keyword t)
param_whitelist (sexp nil ?valuep nil ?requiredp nil ?isExpression t ?keyword t)
param_blacklist (sexp nil ?valuep nil ?requiredp nil ?isExpression t ?keyword t)
edit_master (boolean nil ?valuep t ?requiredp t ?isExpression nil ?keyword t)
edit_transform (boolean t ?valuep t ?requiredp t ?isExpression nil ?keyword t)
parameters (pcell_params (nil nil) ?valuep t ?requiredp t ?isExpression t ?keyword t ?help "Name-value pairs corresponding to the PCell parameters. To use a PCell's CDF interface, use the edit parameters
command instead."))
)
?valuep t
?requiredp t
?isExpression t
?keyword nil
)
lock (boolean nil ?valuep t ?requiredp t ?isExpression nil ?keyword t ?help "Add the shapes to a figGroup rather than a group"))
(select
source (geo (geo grow 0 type "Group" points nil group "toAlign" name nil net nil expression nil) ?lazyp nil ?valuep t ?requiredp t ?isExpression t ?keyword t ?help "The shapes to select.")
reference (geo (geo grow 0 type "Group" points nil group nil name nil net nil expression nil) ?lazyp nil ?valuep nil ?requiredp nil ?isExpression t ?keyword t ?help "Reference for partially selecting shapes")
reset (boolean nil ?valuep t ?requiredp t ?isExpression nil ?keyword t ?help "Clear selection before selecting the shapes"))
(AlignBoundaries )
))
)
;; Imported local (Skill++) definitions
?importedCode
nil
;; Saved state of the GUI
?guiData
(nil
selectedCommands nil
activeTab "AlignBoundaries"
openTabs ("AlignBoundaries" "draw")
commandPaletteSelection (MyAppCells_AlignBoundaries)
commandPalette (nil
Control\ Flow t
Measure t
Follow t
MyAppCells t))
)