;;; 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)) )