<<--File: IPPlaceXamples.mesa>> <> <<>> DIRECTORY IPPlaceKit; IPPlaceXamples: CEDAR DEFINITIONS = BEGIN <<-- This is simply a bunch of sample heuristics. Use them as guide on how to interface with>> <<-- the system. Or simply improve by modifying them.>> <<-- NB: THIS SAMPLE ASSUMES ALL THE COMPONENTS ARE RECTANGLES>> Components: TYPE = IPPlaceKit.Components; <<--Examples of OrderingFn>> OrderingFnX1: IPPlaceKit.OrderingFn; <<--uniformly generates LIST OF [depth: ofx1Depth, breadth: ofx1Breadth, VARS =>> <<-- (1) ofx1Depth: PUBLIC NAT _ 3; >> <<-- (2) ofx1Breadth: PUBLIC NAT _ 5;>> <<>> <<--Examples of PlaceEvaluator and PlaceCompTGen Functions>> PlaceEvaluatorX1: IPPlaceKit.PlaceEvaluator; <<-- Use NetLength; NO pruning>> <<>> PlaceEvaluatorX2: IPPlaceKit.PlaceEvaluator; <<-- Use NetLength; >> <<-- Does Simple prunning: >> <<-- (i) number of components yet to place>> <<-- (ii) pex2PruneCoeff: PUBLIC REAL _ 0.1>> PlaceCompTGenX1: IPPlaceKit.PlaceCompTGen; <<--Generate all grow positions (assuming rectangular blocks only, eg. no Grow1)>> <<--Number generated controlled by: pctgX1Keep: PUBLIC NAT _ 4>> PlaceCompTGenX2: IPPlaceKit.PlaceCompTGen; <<-- Similar PlaceCompTGenX1 but with prunning by>> <<-- Prune by not enumerating further if grow site generation is in wrong direction>> <<-- Number generated controlled by: pctgX2Keep: PUBLIC NAT _ 4>> <<--Examples of RemoveEvaluator and RemoveCompTGen>> RemoveEvaluatorX1: IPPlaceKit.RemoveEvaluator; <<-- Use area of assembly. No Prunning>> RemoveCompsTGenX1: IPPlaceKit.RemoveCompTGen; <<--Try removing each active componen using Shrink. NO prunning>> <<-- value = (assembly area after removal) + IPPlaceKit.GetComponentArea[co, TRUE, FALSE]>> <<--(1) rctgX1Keep: PUBLIC NAT _ 3; >> <<-- (2) rctgX1ShrnkDn: PUBLIC IPCTG.ChType _ hor;>> END.