CDSimpleRules.mesa (part of ChipNDale)
Copyright © 1985 by Xerox Corporation. All rights reserved.
by Christian Jacobi, July 5, 1985 4:58:37 pm PDT
Last Edited by Christian Jacobi, July 5, 1985 6:06:14 pm PDT
DIRECTORY
CD, Rope, SymTab;
CDSimpleRules: CEDAR DEFINITIONS =
BEGIN
--This module is used to hide the actual technology used from otherwise quite
--technology independent routing software. Not all technologies do support this
--module; If used for a technology which does not support this module, procedures
--will raise NotKnown.
NotKnown: ERROR;
MinWidth:
PROC [layer:
CD.Layer]
RETURNS [
CD.Number];
-- Minimum width of conductors.
-- Might return 0 if nothing specified.
-- (Width of interrest rect).
MinDist:
PROC [l1, l2:
CD.Layer]
RETURNS [
CD.Number];
-- Minimum distance between unrelated conductors.
-- 0 if no interaction.
-- Error if l1 and l2 from different technologies.
-- Raises NotKnown if distance (or technology) is not known.
-- (Distance of interrest rects).
GetLayer:
PROC [technology, layer:
REF]
RETURNS [
CD.Layer];
-- Tries to figure out a layer, given names.
-- Use only to get technology specific names.
-- A little bit more forgiving than CD.FetchLayer...
-- Raises NotKnown if not known.
Rect:
PROC [size:
CD.Position, layer:
CD.Layer]
RETURNS [
CD.Object];
-- size: interest rect
-- For conveniance only, duplicate of CDRects...
Contact:
PROC [l1, l2:
CD.Layer]
RETURNS [
CD.Object];
-- nil if any complication or no contact possible...
-- use CD.InterestRect to get size
-- Error if l1 and l2 from different technologies.
Implement
Technology:
PROC [technology:
CD.Technology,
minWidth: PROC [layer: CD.Layer] RETURNS [CD.Number],
minDist: PROC [l1, l2: CD.Layer] RETURNS [CD.Number],
contact: PROC [l1, l2: CD.Layer] RETURNS [CD.Object],
layerTable: SymTab.Ref←NIL,
technologyNames: LIST OF Rope.ROPE ← NIL
];
END.