Bug fixes for MOSIS SCMOS_DEEP support.
* Change: In Hurricane, the NetRoutingProperty is moved into Hurricane from Katabatic. Needed for Knik to be able to access thoses informations. * Change: In Hurricane, in RoutingPad::setOnBestComponent(), now in case of identical area, select the component of lowest id. This should not be needed if the component ordering was fully deterministic as it should be (will investigate later). This is to ensure that the choosen component is always the same, especially between save/load of a global routing. * Bug: In Katabatic, in AutoContactHTee::updateTopology(), invalidate the segments only if the topology is valid (no NULL in the cached segments). * Bug: In Katabatic, in GCellTopology::construct(), throw an error if the topology is bad instead of trying to continue (and core dump later... ). * Bug: In Kite, in BuildPowerRails, distinguish the name of the master net in the pad (for vddi, vssi, vdde, vsse, ck, cki & cko) and the name of the net in the *chip* netlist. Must use the later to make comparison as they may differs. * Change: In Knik, in save/load solution, exclude nets that are not globally routed by Knik. That is which NetRoutingProperty is not *Automatic*. * Bug: In Cumulus, in chip.BlockPower take account of the layer width extention to sligthy shrink the connector thus avoiding a notch with standart cell in some cases. * Change: In Cumulus, in chip.ClockTree disable the use of fixed Steiner trees for the leaf clocks, as it seems overconstrained for the router. First move was to lower them in M2/M3 (instead of M3/M4) but that was not sufficent. * New: In Cumulus, RSavePlugin for recursively saving a physical hierarchy. * New: In documentation, first embryo for RDS file. Should have been in Alliance git, but I prefer to keep newest doc in Coriolis.
This commit is contained in:
parent
2c345c9033
commit
1f9ae36554
|
@ -49,13 +49,13 @@ allianceConfig = \
|
|||
routingGaugesTable = {}
|
||||
|
||||
routingGaugesTable['sxlib'] = \
|
||||
( ( 'METAL1', ( Gauge.Vertical , Gauge.PinOnly, 0, 0.0, 0, 5, 2, 2 ) )
|
||||
, ( 'METAL2', ( Gauge.Horizontal, Gauge.Default, 1, 7.0, 0, 5, 2, 2 ) )
|
||||
, ( 'METAL3', ( Gauge.Vertical , Gauge.Default, 2, 0.0, 0, 5, 2, 2 ) )
|
||||
, ( 'METAL4', ( Gauge.Horizontal, Gauge.Default, 3, 0.0, 0, 5, 2, 2 ) )
|
||||
, ( 'METAL5', ( Gauge.Vertical , Gauge.Default, 4, 0.0, 0, 5, 2, 2 ) )
|
||||
#, ( 'METAL6', ( Gauge.Horizontal, Gauge.Default, 5, 0.0, 0, 5, 2, 2 ) )
|
||||
#, ( 'METAL7', ( Gauge.Vertical , Gauge.Default, 6, 0.0, 0, 5, 2, 2 ) )
|
||||
( ( 'METAL1', ( Gauge.Vertical , Gauge.PinOnly, 0, 0.0, 0, 5, 2, 1 ) )
|
||||
, ( 'METAL2', ( Gauge.Horizontal, Gauge.Default, 1, 7.0, 0, 5, 2, 1 ) )
|
||||
, ( 'METAL3', ( Gauge.Vertical , Gauge.Default, 2, 0.0, 0, 5, 2, 1 ) )
|
||||
, ( 'METAL4', ( Gauge.Horizontal, Gauge.Default, 3, 0.0, 0, 5, 2, 1 ) )
|
||||
, ( 'METAL5', ( Gauge.Vertical , Gauge.Default, 4, 0.0, 0, 5, 2, 1 ) )
|
||||
#, ( 'METAL6', ( Gauge.Horizontal, Gauge.Default, 5, 0.0, 0, 5, 2, 1 ) )
|
||||
#, ( 'METAL7', ( Gauge.Vertical , Gauge.Default, 6, 0.0, 0, 5, 2, 1 ) )
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
set ( pyPlugins ${CMAKE_CURRENT_SOURCE_DIR}/plugins/__init__.py
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/plugins/ChipPlugin.py
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/plugins/ClockTreePlugin.py
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/plugins/RSavePlugin.py
|
||||
)
|
||||
set ( pyPluginCT ${CMAKE_CURRENT_SOURCE_DIR}/plugins/clocktree/__init__.py
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/plugins/clocktree/RSMT.py
|
||||
|
|
|
@ -0,0 +1,101 @@
|
|||
#!/usr/bin/env python
|
||||
#
|
||||
# This file is part of the Coriolis Software.
|
||||
# Copyright (c) UPMC 2014-2014, All Rights Reserved
|
||||
#
|
||||
# +-----------------------------------------------------------------+
|
||||
# | C O R I O L I S |
|
||||
# | C u m u l u s - P y t h o n T o o l s |
|
||||
# | |
|
||||
# | Author : Jean-Paul CHAPUT |
|
||||
# | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||
# | =============================================================== |
|
||||
# | Python : "./plugins/RSavePlugin.py" |
|
||||
# +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
try:
|
||||
import sys
|
||||
import traceback
|
||||
import os.path
|
||||
import Cfg
|
||||
import CRL
|
||||
import helpers
|
||||
from helpers import ErrorMessage
|
||||
from helpers import WarningMessage
|
||||
import plugins
|
||||
except ImportError, e:
|
||||
serror = str(e)
|
||||
if serror.startswith('No module named'):
|
||||
module = serror.split()[-1]
|
||||
print '[ERROR] The <%s> python module or symbol cannot be loaded.' % module
|
||||
print ' Please check the integrity of the <coriolis> package.'
|
||||
if str(e).find('cannot open shared object file'):
|
||||
library = serror.split(':')[0]
|
||||
print '[ERROR] The <%s> shared library cannot be loaded.' % library
|
||||
print ' Under RHEL 6, you must be under devtoolset-2.'
|
||||
print ' (scl enable devtoolset-2 bash)'
|
||||
sys.exit(1)
|
||||
except Exception, e:
|
||||
print '[ERROR] A strange exception occurred while loading the basic Coriolis/Python'
|
||||
print ' modules. Something may be wrong at Python/C API level.\n'
|
||||
print ' %s' % e
|
||||
sys.exit(2)
|
||||
|
||||
|
||||
# Write back layout to disk if everything has gone fine.
|
||||
# Must write all the sub-blocks of the core but *not* the
|
||||
# standard cell (mainly the feed-through).
|
||||
|
||||
def rsave ( cell, depth=0 ):
|
||||
if cell.isTerminal(): return
|
||||
|
||||
framework = CRL.AllianceFramework.get()
|
||||
if depth == 0: print ' o Recursive Save-Cell.'
|
||||
|
||||
print ' %s+ %s (layout).' % ( ' '*(depth*2), cell.getName() )
|
||||
framework.saveCell( cell, CRL.Catalog.State.Physical )
|
||||
|
||||
for instance in cell.getInstances():
|
||||
masterCell = instance.getMasterCell()
|
||||
if not masterCell.isTerminal():
|
||||
rsave( masterCell, depth+1 )
|
||||
return
|
||||
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
# Plugin hook functions, unicornHook:menus, ScritMain:call
|
||||
|
||||
def unicornHook ( **kw ):
|
||||
plugins.kwUnicornHook( 'plugins.rsave'
|
||||
, 'R-Save Cell'
|
||||
, 'Recursively Save Top Cell and it\'s Instances'
|
||||
, sys.modules[__name__].__file__
|
||||
, **kw
|
||||
)
|
||||
return
|
||||
|
||||
|
||||
def ScriptMain ( **kw ):
|
||||
try:
|
||||
helpers.staticInitialization( quiet=True )
|
||||
#helpers.setTraceLevel( 550 )
|
||||
|
||||
cell, editor = plugins.kwParseMain( **kw )
|
||||
|
||||
if not cell:
|
||||
print WarningMessage( 'No Cell loaded in the editor (yet), nothing done.' )
|
||||
return 0
|
||||
|
||||
rsave( cell )
|
||||
|
||||
except ErrorMessage, e:
|
||||
print e; errorCode = e.code
|
||||
except Exception, e:
|
||||
print '\n\n', e; errorCode = 1
|
||||
traceback.print_tb(sys.exc_info()[2])
|
||||
|
||||
sys.stdout.flush()
|
||||
sys.stderr.flush()
|
||||
|
||||
return 0
|
|
@ -33,6 +33,7 @@ from CRL import RoutingLayerGauge
|
|||
from helpers import trace
|
||||
from helpers import ErrorMessage
|
||||
from helpers import WarningMessage
|
||||
import plugins
|
||||
from plugins import StackedVia
|
||||
import chip.BlockPower
|
||||
|
||||
|
@ -365,8 +366,8 @@ class EastSide ( VerticalSide ):
|
|||
class Corona ( object ):
|
||||
|
||||
def __init__ ( self, block ):
|
||||
if not isinstance(block,chip.BlockPower.Block):
|
||||
raise ErrorMessage( 1, 'Attempt to create a Corona on a non-Block object.' )
|
||||
#if not isinstance(block,plugins.chip.BlockPower.Block):
|
||||
# raise ErrorMessage( 1, 'Attempt to create a Corona on a non-Block object.' )
|
||||
|
||||
self._railsNb = Cfg.getParamInt('chip.block.rails.count').asInt()
|
||||
self._hRailWidth = DbU.fromLambda( Cfg.getParamInt('chip.block.rails.hWidth' ).asInt() )
|
||||
|
|
|
@ -39,11 +39,12 @@ import chip.Configuration
|
|||
class Side ( object ):
|
||||
|
||||
def __init__ ( self, block, side, net, metal ):
|
||||
self.block = block
|
||||
self.side = side
|
||||
self.net = net
|
||||
self.metal = metal
|
||||
self.terminals = [ ]
|
||||
self.block = block
|
||||
self.side = side
|
||||
self.net = net
|
||||
self.metal = metal
|
||||
self.deltaWidth = metal.getExtentionWidth()*2
|
||||
self.terminals = [ ]
|
||||
return
|
||||
|
||||
def addTerminal ( self, position, width ):
|
||||
|
@ -97,11 +98,11 @@ class Side ( object ):
|
|||
for terminal in self.terminals:
|
||||
if self.side == chip.West or self.side == chip.East:
|
||||
center = Point( x, terminal[0].getCenter() )
|
||||
height = terminal[0].getSize()
|
||||
height = terminal[0].getSize() - self.deltaWidth
|
||||
if height < minWidth: height = minWidth
|
||||
elif self.side == chip.North or self.side == chip.South:
|
||||
center = Point( terminal[0].getCenter(), y )
|
||||
width = terminal[0].getSize()
|
||||
width = terminal[0].getSize() - self.deltaWidth
|
||||
if width < minWidth: width = minWidth
|
||||
|
||||
self.block.path.getTransformation().applyOn( center )
|
||||
|
|
|
@ -114,6 +114,7 @@ class GaugeConf ( object ):
|
|||
OffsetRight1 = 0x0002
|
||||
OffsetTop1 = 0x0004
|
||||
OffsetBottom1 = 0x0008
|
||||
DeepDepth = 0x0010
|
||||
|
||||
def __init__ ( self ):
|
||||
self._cellGauge = None
|
||||
|
@ -143,39 +144,56 @@ class GaugeConf ( object ):
|
|||
% self._routingGauge.getDepth() )
|
||||
self._topLayerDepth = self._routingGauge.getDepth()
|
||||
|
||||
self._horizontalDepth = 0
|
||||
self._verticalDepth = 0
|
||||
self._horizontalDepth = -1
|
||||
self._verticalDepth = -1
|
||||
self._horizontalDeepDepth = -1
|
||||
self._verticalDeepDepth = -1
|
||||
for depth in range(0,self._topLayerDepth+1):
|
||||
if self._routingGauge.getLayerGauge(depth).getType() == RoutingLayerGauge.PinOnly:
|
||||
continue
|
||||
if self._routingGauge.getLayerGauge(depth).getDirection() == RoutingLayerGauge.Horizontal:
|
||||
if self._horizontalDeepDepth < 0:
|
||||
self._horizontalDeepDepth = depth
|
||||
self._horizontalDepth = depth
|
||||
if self._routingGauge.getLayerGauge(depth).getDirection() == RoutingLayerGauge.Vertical:
|
||||
if self._verticalDeepDepth < 0:
|
||||
self._verticalDeepDepth = depth
|
||||
self._verticalDepth = depth
|
||||
return
|
||||
|
||||
def _createContact ( self, net, x, y ):
|
||||
def _createContact ( self, net, x, y, flags ):
|
||||
if flags & GaugeConf.DeepDepth: depth = self._horizontalDeepDepth
|
||||
else: depth = self._horizontalDepth
|
||||
|
||||
return Contact.create( net
|
||||
, self._routingGauge.getContactLayer(self._horizontalDepth)
|
||||
, self._routingGauge.getContactLayer(depth)
|
||||
, x, y
|
||||
, self._routingGauge.getLayerGauge(self._horizontalDepth).getViaWidth()
|
||||
, self._routingGauge.getLayerGauge(self._horizontalDepth).getViaWidth()
|
||||
, self._routingGauge.getLayerGauge(depth).getViaWidth()
|
||||
, self._routingGauge.getLayerGauge(depth).getViaWidth()
|
||||
)
|
||||
|
||||
def _createHorizontal ( self, source, target, y ):
|
||||
def _createHorizontal ( self, source, target, y, flags ):
|
||||
if flags & GaugeConf.DeepDepth: depth = self._horizontalDeepDepth
|
||||
else: depth = self._horizontalDepth
|
||||
|
||||
segment = Horizontal.create( source
|
||||
, target
|
||||
, self._routingGauge.getRoutingLayer(self._horizontalDepth)
|
||||
, self._routingGauge.getRoutingLayer(depth)
|
||||
, y
|
||||
, self._routingGauge.getLayerGauge(self._horizontalDepth).getWireWidth()
|
||||
, self._routingGauge.getLayerGauge(depth).getWireWidth()
|
||||
)
|
||||
trace( 550, segment )
|
||||
return segment
|
||||
|
||||
def _createVertical ( self, source, target, x ):
|
||||
def _createVertical ( self, source, target, x, flags ):
|
||||
if flags & GaugeConf.DeepDepth: depth = self._verticalDeepDepth
|
||||
else: depth = self._verticalDepth
|
||||
|
||||
segment = Vertical.create( source
|
||||
, target
|
||||
, self._routingGauge.getRoutingLayer(self._verticalDepth)
|
||||
, self._routingGauge.getRoutingLayer(depth)
|
||||
, x
|
||||
, self._routingGauge.getLayerGauge(self._verticalDepth).getWireWidth()
|
||||
, self._routingGauge.getLayerGauge(depth).getWireWidth()
|
||||
)
|
||||
trace( 550, segment )
|
||||
return segment
|
||||
|
@ -183,8 +201,15 @@ class GaugeConf ( object ):
|
|||
def _rpAccess ( self, rp, flags ):
|
||||
trace( 550, ',+', '\t_rpAccess() %s\n' % str(rp) )
|
||||
|
||||
hpitch = self._routingGauge.getLayerGauge(self._horizontalDepth).getPitch()
|
||||
hoffset = self._routingGauge.getLayerGauge(self._horizontalDepth).getOffset()
|
||||
if flags & GaugeConf.DeepDepth:
|
||||
hdepth = self._horizontalDeepDepth
|
||||
vdepth = self._verticalDeepDepth
|
||||
else:
|
||||
hdepth = self._horizontalDepth
|
||||
vdepth = self._verticalDepth
|
||||
|
||||
hpitch = self._routingGauge.getLayerGauge(hdepth).getPitch()
|
||||
hoffset = self._routingGauge.getLayerGauge(hdepth).getOffset()
|
||||
contact1 = Contact.create( rp, self._routingGauge.getContactLayer(0), 0, 0 )
|
||||
midSliceY = contact1.getY() - (contact1.getY() % self._cellGauge.getSliceHeight()) \
|
||||
+ self._cellGauge.getSliceHeight() / 2
|
||||
|
@ -197,8 +222,8 @@ class GaugeConf ( object ):
|
|||
|
||||
trace( 550, contact1 )
|
||||
|
||||
if flags & GaugeConf.HAccess: stopDepth = self._horizontalDepth
|
||||
else: stopDepth = self._verticalDepth
|
||||
if flags & GaugeConf.HAccess: stopDepth = hdepth
|
||||
else: stopDepth = vdepth
|
||||
|
||||
for depth in range(1,stopDepth):
|
||||
xoffset = 0
|
||||
|
@ -289,13 +314,17 @@ class GaugeConfWrapper ( object ):
|
|||
def gaugeConf ( self ): return self._gaugeConf
|
||||
|
||||
@property
|
||||
def routingGauge ( self ): return self._gaugeConf._routingGauge
|
||||
def routingGauge ( self ): return self._gaugeConf._routingGauge
|
||||
@property
|
||||
def topLayerDepth ( self ): return self._gaugeConf._topLayerDepth
|
||||
@property
|
||||
def horizontalDepth ( self ): return self._gaugeConf._horizontalDepth
|
||||
@property
|
||||
def verticalDepth ( self ): return self._gaugeConf._verticalDepth
|
||||
@property
|
||||
def topLayerDepth ( self ): return self._gaugeConf._topLayerDepth
|
||||
def horizontalDeepDepth ( self ): return self._gaugeConf._horizontalDeepDepth
|
||||
@property
|
||||
def horizontalDepth ( self ): return self._gaugeConf._horizontalDepth
|
||||
@property
|
||||
def verticalDepth ( self ): return self._gaugeConf._verticalDepth
|
||||
def verticalDeepDepth ( self ): return self._gaugeConf._verticalDeepDepth
|
||||
|
||||
def loadRoutingGauge ( self ): self._gaugeConf._loadRoutingGauge()
|
||||
|
||||
|
@ -314,14 +343,14 @@ class GaugeConfWrapper ( object ):
|
|||
def rpAccessByPlugName ( self, instance, plugName, net, flags=0 ):
|
||||
return self._gaugeConf._rpAccessByPlugName( instance, plugName, net, flags )
|
||||
|
||||
def createContact ( self, net, x, y ):
|
||||
return self._gaugeConf._createContact( net, x, y )
|
||||
def createContact ( self, net, x, y, flags=0 ):
|
||||
return self._gaugeConf._createContact( net, x, y, flags )
|
||||
|
||||
def createHorizontal ( self, source, target, y ):
|
||||
return self._gaugeConf._createHorizontal( source, target, y )
|
||||
def createHorizontal ( self, source, target, y, flags=0 ):
|
||||
return self._gaugeConf._createHorizontal( source, target, y, flags )
|
||||
|
||||
def createVertical ( self, source, target, x ):
|
||||
return self._gaugeConf._createVertical( source, target, x )
|
||||
def createVertical ( self, source, target, x, flags=0 ):
|
||||
return self._gaugeConf._createVertical( source, target, x, flags )
|
||||
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
|
@ -672,7 +701,10 @@ class ChipConfWrapper ( GaugeConfWrapper ):
|
|||
def loadConfiguration ( cell ):
|
||||
sys.path.append( os.getcwd() )
|
||||
|
||||
confFile = cell.getName()+'_chip'
|
||||
confFile = cell.getName()+'_chip'
|
||||
if not os.path.isfile(confFile+'.py'):
|
||||
raise ErrorMessage( 1, 'ChipPlugin configuration file <%s.py> is missing.' % confFile )
|
||||
|
||||
confModule = __import__( confFile, globals(), locals(), confFile )
|
||||
|
||||
if not confModule.__dict__.has_key('chip'):
|
||||
|
|
|
@ -54,6 +54,7 @@ try:
|
|||
from chip.Configuration import getPlugByName
|
||||
from chip.Configuration import getRpBb
|
||||
from chip.Configuration import destroyNetComponents
|
||||
from chip.Configuration import GaugeConf
|
||||
from chip.Configuration import GaugeConfWrapper
|
||||
except ImportError, e:
|
||||
serror = str(e)
|
||||
|
@ -76,11 +77,6 @@ except Exception, e:
|
|||
|
||||
class HTree ( GaugeConfWrapper ):
|
||||
|
||||
HAccess = 0x0001
|
||||
OffsetRight1 = 0x0002
|
||||
OffsetTop1 = 0x0004
|
||||
OffsetBottom1 = 0x0008
|
||||
|
||||
@staticmethod
|
||||
def create ( conf, cell, clockNet, clockBox ):
|
||||
if clockBox.isEmpty(): raise ErrorMessage( 3, 'ClockTree: The clock area is empty.' )
|
||||
|
@ -263,25 +259,28 @@ class HTree ( GaugeConfWrapper ):
|
|||
if not node.component:
|
||||
x = node.realX
|
||||
if node.realX in self.usedVTracks:
|
||||
x += self.routingGauge.getLayerGauge(self.verticalDepth).getPitch()
|
||||
x += self.routingGauge.getLayerGauge(self.verticalDeepDepth).getPitch()
|
||||
# This is a Steiner point.
|
||||
node.component = self.createContact( net
|
||||
, x
|
||||
, node.realY - self.routingGauge.getLayerGauge(self.horizontalDepth).getPitch() )
|
||||
trace( 550, '\tCreate node.component: @Y%d (y:%d) %s\n' % (DbU.toLambda(node.realY)
|
||||
,DbU.toLambda(node.y)
|
||||
,node.component) )
|
||||
, node.y + self.cellGauge.getSliceHeight()/2 - self.routingGauge.getLayerGauge(self.horizontalDeepDepth).getPitch()
|
||||
, GaugeConf.DeepDepth )
|
||||
trace( 550, '\tCreate (Steiner) node.component: @Y%d (y:%d - %d) %s\n' \
|
||||
% (DbU.toLambda(node.realY)
|
||||
,DbU.toLambda(node.y)
|
||||
,DbU.toLambda(self.routingGauge.getLayerGauge(self.horizontalDeepDepth).getPitch())
|
||||
,node.component) )
|
||||
else:
|
||||
# This a terminal (graph) point
|
||||
for edge in node.edges:
|
||||
flags = HTree.HAccess
|
||||
flags = GaugeConf.HAccess|GaugeConf.DeepDepth
|
||||
if not edge.isHorizontal():
|
||||
if node.isSame(edge.source) or edge.isVertical():
|
||||
flags = 0
|
||||
flags &= ~GaugeConf.HAccess
|
||||
break
|
||||
flags |= HTree.OffsetTop1
|
||||
flags |= GaugeConf.OffsetTop1
|
||||
if node.realX in self.usedVTracks:
|
||||
flags |= HTree.OffsetRight1
|
||||
flags |= GaugeConf.OffsetRight1
|
||||
node.component = self.rpAccess( node.component, flags )
|
||||
|
||||
for edge in mst.edges:
|
||||
|
@ -289,32 +288,33 @@ class HTree ( GaugeConfWrapper ):
|
|||
targetContact = edge.target.component
|
||||
|
||||
if edge.isHorizontal():
|
||||
self.createHorizontal( sourceContact, targetContact, targetContact.getY() )
|
||||
self.createHorizontal( sourceContact, targetContact, targetContact.getY(), GaugeConf.DeepDepth )
|
||||
elif edge.isVertical():
|
||||
self.createVertical ( sourceContact, targetContact, sourceContact.getX() )
|
||||
self.createVertical ( sourceContact, targetContact, sourceContact.getX(), GaugeConf.DeepDepth )
|
||||
else:
|
||||
turn = self.createContact( edge.source.component.getNet()
|
||||
, sourceContact.getX()
|
||||
, targetContact.getY() )
|
||||
self.createVertical ( sourceContact, turn, sourceContact.getX() )
|
||||
self.createHorizontal( turn, targetContact, targetContact.getY() )
|
||||
, targetContact.getY()
|
||||
, GaugeConf.DeepDepth )
|
||||
self.createVertical ( sourceContact, turn, sourceContact.getX(), GaugeConf.DeepDepth )
|
||||
self.createHorizontal( turn, targetContact, targetContact.getY(), GaugeConf.DeepDepth )
|
||||
return
|
||||
|
||||
def _connectLeafs ( self, leafBuffer, leafs ):
|
||||
trace( 550, ',+', '\tBuffer <%s> has %i leafs.\n' % (leafBuffer.getName(),len(leafs)) )
|
||||
if len(leafs) == 0: return
|
||||
|
||||
leafCk = getPlugByName(leafBuffer,self.bufferOut).getNet()
|
||||
bufferRp = self.rpByPlugName( leafBuffer, self.bufferOut, leafCk )
|
||||
|
||||
rsmt = RSMT( leafCk.getName() )
|
||||
rsmt.addNode( bufferRp, bufferRp.getX(), self.toYCellGrid(bufferRp.getY()) )
|
||||
for leaf in leafs:
|
||||
registerRp = self.rpByOccurrence( leaf, leafCk )
|
||||
rsmt.addNode( registerRp, registerRp.getX(), self.toYCellGrid(registerRp.getY()) )
|
||||
|
||||
rsmt.runI1S()
|
||||
self._RSMTtoLayout( rsmt, leafCk )
|
||||
#if len(leafs) == 0: return
|
||||
#
|
||||
#leafCk = getPlugByName(leafBuffer,self.bufferOut).getNet()
|
||||
#bufferRp = self.rpByPlugName( leafBuffer, self.bufferOut, leafCk )
|
||||
#
|
||||
#rsmt = RSMT( leafCk.getName() )
|
||||
#rsmt.addNode( bufferRp, bufferRp.getX(), self.toYCellGrid(bufferRp.getY()) )
|
||||
#for leaf in leafs:
|
||||
# registerRp = self.rpByOccurrence( leaf, leafCk )
|
||||
# rsmt.addNode( registerRp, registerRp.getX(), self.toYCellGrid(registerRp.getY()) )
|
||||
#
|
||||
#rsmt.runI1S()
|
||||
#self._RSMTtoLayout( rsmt, leafCk )
|
||||
|
||||
trace( 550, '-' )
|
||||
return
|
||||
|
@ -507,8 +507,8 @@ class HTreeNode ( object ):
|
|||
def route ( self ):
|
||||
if not self.hasLeafs(): return
|
||||
|
||||
leftSourceContact = self.topTree.rpAccessByPlugName( self.sourceBuffer, self.topTree.bufferOut, self.ckNet , HTree.HAccess|HTree.OffsetBottom1 )
|
||||
rightSourceContact = self.topTree.rpAccessByPlugName( self.sourceBuffer, self.topTree.bufferOut, self.ckNet , HTree.HAccess|HTree.OffsetBottom1 )
|
||||
leftSourceContact = self.topTree.rpAccessByPlugName( self.sourceBuffer, self.topTree.bufferOut, self.ckNet , GaugeConf.HAccess|GaugeConf.OffsetBottom1 )
|
||||
rightSourceContact = self.topTree.rpAccessByPlugName( self.sourceBuffer, self.topTree.bufferOut, self.ckNet , GaugeConf.HAccess|GaugeConf.OffsetBottom1 )
|
||||
blContact = self.topTree.rpAccessByPlugName( self.blBuffer , self.topTree.bufferIn , self.ckNet )
|
||||
brContact = self.topTree.rpAccessByPlugName( self.brBuffer , self.topTree.bufferIn , self.ckNet )
|
||||
tlContact = self.topTree.rpAccessByPlugName( self.tlBuffer , self.topTree.bufferIn , self.ckNet )
|
||||
|
|
|
@ -199,7 +199,7 @@ class Graph ( object ):
|
|||
|
||||
def addNode ( self, component, x, y ):
|
||||
self._nodes.append( Node( component, x, y ) )
|
||||
return
|
||||
return self._nodes[-1]
|
||||
|
||||
def copyNode ( self, node ):
|
||||
self.addNode( node.component, node.x, node.y )
|
||||
|
@ -316,6 +316,11 @@ class RSMT ( Graph ):
|
|||
trace( 550, ',--', "\n" )
|
||||
return
|
||||
|
||||
def addNode ( self, component, x, y ):
|
||||
node = Graph.addNode( self, component, x, y )
|
||||
trace( 550, '\t New Node: %s\n' % node )
|
||||
return
|
||||
|
||||
def runI1S ( self ):
|
||||
self._edges = [ ]
|
||||
self._length = 0
|
||||
|
|
|
@ -71,7 +71,7 @@ def getDeltas ( layer ):
|
|||
# , 'mW_METAL2' : DbU.fromLambda( 4.0 )
|
||||
# }
|
||||
deltas = { 'L_METAL1' : DbU.fromLambda( -1.0 )
|
||||
, 'L_METAL2' : DbU.fromLambda( 3.0 )
|
||||
, 'L_METAL2' : DbU.fromLambda( 1.5 )
|
||||
, 'L_blockage2': DbU.fromLambda( -0.5 )
|
||||
, 'L_blockage4': DbU.fromLambda( -0.5 )
|
||||
, 'L_xWell' : DbU.fromLambda( 6.0 )
|
||||
|
@ -82,7 +82,7 @@ def getDeltas ( layer ):
|
|||
, 'W_xWell' : DbU.fromLambda( 12.0 )
|
||||
, 'W_blockage2': DbU.fromLambda( -1.0 )
|
||||
, 'mW_METAL1' : DbU.fromLambda( 4.0 )
|
||||
, 'mW_METAL2' : DbU.fromLambda( 4.0 )
|
||||
, 'mW_METAL2' : DbU.fromLambda( 6.0 )
|
||||
}
|
||||
|
||||
dL = 0
|
||||
|
@ -218,6 +218,7 @@ def px2mpx ( editor, pxCell ):
|
|||
, component.getDxSource()*2 - dLLeft
|
||||
, component.getDxTarget()*2 + dLRight
|
||||
)
|
||||
print ' Copy:', dupComponent
|
||||
else:
|
||||
print ' Horizontal component too small *or* skipped, not converted'
|
||||
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
.. -*- Mode: rst -*-
|
||||
|
||||
.. role:: raw-html(raw)
|
||||
:format: html
|
||||
|
||||
.. URLs that changes between the various backends.
|
||||
|
||||
.. For HTML backend
|
||||
|
||||
.. Stand-alone images.
|
||||
.. |RDS_VW| replace:: :raw-html:`<center><img src="./images/RDS_VW.png" alt="RDS Variable Width Rule"></center>`
|
||||
.. |RDS_LCW| replace:: :raw-html:`<center><img src="./images/RDS_LCW.png" alt="RDS Left Constant Width Rule"></center>`
|
||||
|
||||
.. Direct LaTeX commands encapsulation.
|
||||
.. |dotfill| replace:: :raw-html:` `
|
||||
.. |noindent| replace:: :raw-html:`<p class="empty"></p>`
|
||||
.. |medskip| replace:: :raw-html:`<br>`
|
||||
.. |newpage| replace:: :raw-html:`<br>`
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
|
||||
.. -*- Mode: rst -*-
|
||||
|
||||
.. role:: raw-latex(raw)
|
||||
:format: latex
|
||||
|
||||
.. URLs that changes between the various backends.
|
||||
|
||||
.. |DONE| replace:: :raw-latex:`\marginpar{\fbox{\small\ding{56}}}`
|
||||
|
||||
.. For LaTeX/PDF backend.
|
||||
|
||||
.. Stand-alone images.
|
||||
.. |RDS_VW| replace:: :raw-latex:`\begin{center}\fbox{\includegraphics[width=.7\textwidth]{./images/RDS_VW.eps}}\end{center}`
|
||||
.. |RDS_LCW| replace:: :raw-latex:`\begin{center}\fbox{\includegraphics[width=.4\textwidth]{./images/RDS_LCW.eps}}\end{center}`
|
||||
|
||||
.. Direct LaTeX commands encapsulation.
|
||||
.. |dotfill| replace:: :raw-latex:`\dotfill`
|
||||
.. |noindent| replace:: :raw-latex:`\noindent`
|
||||
.. |medskip| replace:: :raw-latex:`\medskip`
|
||||
.. |newpage| replace:: :raw-latex:`\newpage`
|
||||
|
|
@ -0,0 +1,345 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="generator" content="Docutils 0.6: http://docutils.sourceforge.net/" />
|
||||
<title></title>
|
||||
<meta name="date" content="16, september 2014" />
|
||||
<meta name="authors" content="Jean-Paul Chaput" />
|
||||
<link rel="stylesheet" href="./SoC.css" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="document">
|
||||
|
||||
<table class="docinfo" frame="void" rules="none">
|
||||
<col class="docinfo-name" />
|
||||
<col class="docinfo-content" />
|
||||
<tbody valign="top">
|
||||
<tr><th class="docinfo-name">Date:</th>
|
||||
<td>16, september 2014</td></tr>
|
||||
<tr><th class="docinfo-name">Authors:</th>
|
||||
<td>Jean-Paul Chaput</td></tr>
|
||||
<tr><th class="docinfo-name">Contact:</th>
|
||||
<td><<a class="reference external" href="mailto:alliance-users@soc.lip6.fr">alliance-users@soc.lip6.fr</a>></td></tr>
|
||||
<tr><th class="docinfo-name">Version:</th>
|
||||
<td>0.1</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- -*- Mode: rst -*- -->
|
||||
<!-- -*- Mode: rst -*- -->
|
||||
<!-- URLs that changes between the various backends. -->
|
||||
<!-- For HTML backend -->
|
||||
<!-- Stand-alone images. -->
|
||||
<!-- Direct LaTeX commands encapsulation. -->
|
||||
<!-- -*- Mode: rst -*- -->
|
||||
<!-- Acronyms & names. -->
|
||||
<!-- Tools -->
|
||||
<!-- RDS file syntax. -->
|
||||
<p><span class="raw-html"><br></span></p>
|
||||
<p><strong>Disclaimer:</strong> This document is still far from complete.</p>
|
||||
<p><span class="raw-html"><br></span></p>
|
||||
<div class="section" id="rds-file-format">
|
||||
<h1><a class="toc-backref" href="#id1">RDS File Format</a></h1>
|
||||
<div class="contents topic" id="contents">
|
||||
<p class="topic-title first">Contents</p>
|
||||
<ul class="simple">
|
||||
<li><a class="reference internal" href="#rds-file-format" id="id1">RDS File Format</a><ul>
|
||||
<li><a class="reference internal" href="#introduction" id="id2">Introduction</a></li>
|
||||
<li><a class="reference internal" href="#physical-grid-lambda-value" id="id3">Physical Grid & Lambda Value</a></li>
|
||||
<li><a class="reference internal" href="#the-mbk-to-rds-segment-table" id="id4">The <tt class="docutils literal">MBK_TO_RDS_SEGMENT</tt> table</a></li>
|
||||
<li><a class="reference internal" href="#the-mbk-to-rds-via-table" id="id5">The <tt class="docutils literal">MBK_TO_RDS_VIA</tt> table</a></li>
|
||||
<li><a class="reference internal" href="#the-mbk-to-rds-bigvia-hole-table" id="id6">The <tt class="docutils literal">MBK_TO_RDS_BIGVIA_HOLE</tt> table</a></li>
|
||||
<li><a class="reference internal" href="#the-mbk-to-rds-bigvia-metal-table" id="id7">The <tt class="docutils literal">MBK_TO_RDS_BIGVIA_METAL</tt> table</a></li>
|
||||
<li><a class="reference internal" href="#the-mbk-wiresetting-table" id="id8">The <tt class="docutils literal">MBK_WIRESETTING</tt> table</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<p><span class="raw-html"><br></span></p>
|
||||
<p><span class="raw-html"><br></span></p>
|
||||
<div class="section" id="introduction">
|
||||
<h2><a class="toc-backref" href="#id2">Introduction</a></h2>
|
||||
<p>The RDS file control how a symbolic layout is transformed into it's real
|
||||
conterpart.</p>
|
||||
<div class="note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last"><strong>Unit used inside the RDS file:</strong> all units are expressed in micrometers.</p>
|
||||
</div>
|
||||
<p>Alliance tools relying on the RDS file, and what layers are active for them:</p>
|
||||
<table border="1" class="docutils">
|
||||
<colgroup>
|
||||
<col width="47%" />
|
||||
<col width="16%" />
|
||||
<col width="37%" />
|
||||
</colgroup>
|
||||
<thead valign="bottom">
|
||||
<tr><th class="head">Tool</th>
|
||||
<th class="head">Name</th>
|
||||
<th class="head">RDS Flags</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody valign="top">
|
||||
<tr><td>Layout editor</td>
|
||||
<td><tt class="docutils literal">graal</tt></td>
|
||||
<td><tt class="docutils literal">ALL</tt></td>
|
||||
</tr>
|
||||
<tr><td>Design Rule Checker</td>
|
||||
<td><tt class="docutils literal">druc</tt></td>
|
||||
<td><tt class="docutils literal">ALL</tt>, <tt class="docutils literal">DRC</tt></td>
|
||||
</tr>
|
||||
<tr><td>Electrical extractor</td>
|
||||
<td><tt class="docutils literal">cougar</tt></td>
|
||||
<td><tt class="docutils literal">ALL</tt>, <tt class="docutils literal">EXT</tt></td>
|
||||
</tr>
|
||||
<tr><td>The symbolic to real layout translator</td>
|
||||
<td><tt class="docutils literal">s2r</tt></td>
|
||||
<td><tt class="docutils literal">ALL</tt></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="physical-grid-lambda-value">
|
||||
<h2><a class="toc-backref" href="#id3">Physical Grid & Lambda Value</a></h2>
|
||||
<p>RDS file:</p>
|
||||
<pre class="literal-block">
|
||||
DEFINE PHYSICAL_GRID 0.005
|
||||
DEFINE LAMBDA 0.09
|
||||
</pre>
|
||||
<p>Tells that the physical grid (founder grid) step is 0.005µm and the lambda has
|
||||
a value of 0.09µm. That is, one lambda is 18 grid steps.</p>
|
||||
<p>We can distinguish two kind of <span class="sc">rds</span> files:</p>
|
||||
<ul class="simple">
|
||||
<li>The <em>1µm</em> kind, odd segment widths and coordinates are allowed, but the <tt class="docutils literal">LAMBDA</tt>
|
||||
value <strong>must</strong> represent an <em>even</em> number of foundry grid step.</li>
|
||||
<li>The <em>2µm</em> kind, segments widths and coordinates must all be even. And in that case
|
||||
the <tt class="docutils literal">LAMBDA</tt> value can be any multiple of the foundry grid.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="the-mbk-to-rds-segment-table">
|
||||
<h2><a class="toc-backref" href="#id4">The <tt class="docutils literal">MBK_TO_RDS_SEGMENT</tt> table</a></h2>
|
||||
<p>The <tt class="docutils literal">MBK_TO_RDS_SEGMENT</tt> table control the way segments are translated into
|
||||
real rectangles. Be aware that we are translating <em>segments</em> and not <em>rectangles</em>.
|
||||
Segments are defined by their axis (source & target points) and their width.
|
||||
The geometrical transformations are described according to that model.
|
||||
Obviously, they are either horizontal or vertical.</p>
|
||||
<p>The translation method of a symbolic segment is as follow:</p>
|
||||
<ol class="arabic">
|
||||
<li><p class="first">The segment is translated into one or more physical rectangles.
|
||||
The generated rectangles depends on the tool which is actually
|
||||
using <span class="sc">rds</span> and the flag for the considered real layer.
|
||||
For instance, real layers flagged with <tt class="docutils literal">DRC</tt> will be generated
|
||||
for <tt class="docutils literal">s2r</tt> (for the <tt class="docutils literal">cif</tt> or <tt class="docutils literal">gds</tt>) and <tt class="docutils literal">druc</tt>, but will not
|
||||
be shown under <tt class="docutils literal">graal</tt>.</p>
|
||||
</li>
|
||||
<li><p class="first">Translation into one real layer. <em>First</em> the source & target coordinates and width
|
||||
of the symbolic segment are multiplied by the <tt class="docutils literal">LAMBDA</tt> value to obtain a real
|
||||
segment. <em>Then</em> one of the <tt class="docutils literal">VW</tt>, <tt class="docutils literal">LCW</tt> or <tt class="docutils literal">RCW</tt> transformation is applied to
|
||||
that segment to get the final real rectangle.</p>
|
||||
<ul>
|
||||
<li><p class="first"><tt class="docutils literal">VW</tt> for Variable Width, expand the real layer staying centered from the
|
||||
original one. In those rules, the third number is not used, it is only here
|
||||
to make the life easier for the parser...</p>
|
||||
<p><span class="raw-html"><center><img src="./images/RDS_VW.png" alt="RDS Variable Width Rule"></center></span></p>
|
||||
</li>
|
||||
<li><p class="first"><tt class="docutils literal">LCW</tt> or <tt class="docutils literal">RCW</tt> for Left/Right Constant Width, create an off-center rectangle
|
||||
of fixed width relatively to the real segment. Note that the <tt class="docutils literal">SP</tt> number
|
||||
is the distance <em>between the edge</em> of the real segment and the edge of the
|
||||
generated real rectangle (<em>not</em> from the axis). It is often zero.</p>
|
||||
<p><span class="raw-html"><center><img src="./images/RDS_LCW.png" alt="RDS Left Constant Width Rule"></center></span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ol>
|
||||
<p><span class="raw-html"><br></span></p>
|
||||
<p>Examples:</p>
|
||||
<pre class="literal-block">
|
||||
TABLE MBK_TO_RDS_SEGMENT
|
||||
|
||||
# (Case 1)
|
||||
ALU1 RDS_ALU1 VW 0.18 0.09 0.0 ALL
|
||||
|
||||
# (Case 2)
|
||||
NDIF RDS_NDIF VW 0.18 0.0 0.0 ALL \
|
||||
RDS_ACTIV VW 0.18 0.0 0.0 DRC \
|
||||
RDS_NIMP VW 0.36 0.36 0.0 DRC
|
||||
|
||||
# (Case 3)
|
||||
NTRANS RDS_POLY VW 0.27 0.00 0.0 ALL \
|
||||
RDS_GATE VW 0.27 0.00 0.0 DRC \
|
||||
RDS_NDIF LCW 0.0 0.27 0.0 EXT \
|
||||
RDS_NDIF RCW 0.0 0.27 0.0 EXT \
|
||||
RDS_NDIF VW 0.0 0.72 0.0 DRC \
|
||||
RDS_ACTIV VW 0.0 0.72 0.0 ALL \
|
||||
RDS_NIMP VW 0.18 1.26 0.0 DRC
|
||||
|
||||
END
|
||||
</pre>
|
||||
<p><span class="fboxtt">Case 1</span> the <tt class="docutils literal">ALU1</tt> is translated in exacltly one real rectangle of
|
||||
<tt class="docutils literal">RDS_ALU1</tt>, both ends are extended by 0.18µm and it's width is increased
|
||||
by 0.09µm.</p>
|
||||
<p><span class="fboxtt">Case 2</span> the <tt class="docutils literal">NDIF</tt> will be translated into only one segment
|
||||
under <tt class="docutils literal">graal</tt>, for symbolic visualization. And into three real rectangles
|
||||
for <tt class="docutils literal">s2r</tt> and <tt class="docutils literal">druc</tt>.</p>
|
||||
<p><span class="fboxtt">Case 3</span> the <tt class="docutils literal">NTRANS</tt>, associated to a transistor is a little bit
|
||||
more complex, the generated shapes are different for the extractor <tt class="docutils literal">cougar</tt>
|
||||
in one hand, and for both <tt class="docutils literal">druc</tt> & <tt class="docutils literal">s2r</tt> in the other hand.</p>
|
||||
<ul>
|
||||
<li><p class="first">For the extractor (<tt class="docutils literal">EXT</tt> & <tt class="docutils literal">ALL</tt> flags) there will be four rectangles
|
||||
generateds:</p>
|
||||
<ol class="arabic simple">
|
||||
<li>The gate (<tt class="docutils literal">RDS_GATE</tt>)</li>
|
||||
<li>The left diffusion of the transistor (source or drain) (<tt class="docutils literal">RDS_NDIF</tt>).</li>
|
||||
<li>The right diffusion of the transistor (drain or source) (<tt class="docutils literal">RDS_NDIF</tt>).</li>
|
||||
<li>The active area (<tt class="docutils literal">RDS_ACTIV</tt>).</li>
|
||||
</ol>
|
||||
<p>As the extractor must kept separate the source and the drain of the transistor,
|
||||
they are generated as two offset rectangles, using the <tt class="docutils literal">LCW</tt> and <tt class="docutils literal">RCW</tt> directives.</p>
|
||||
</li>
|
||||
<li><p class="first">For <tt class="docutils literal">s2r</tt> and <tt class="docutils literal">druc</tt> (<tt class="docutils literal">DRC</tt> and <tt class="docutils literal">ALL</tt>), five rectangles are generateds:</p>
|
||||
<ol class="arabic simple">
|
||||
<li>The poly (<tt class="docutils literal">RDS_POLY</tt>).</li>
|
||||
<li>The gate (<tt class="docutils literal">RDS_GATE</tt>).</li>
|
||||
<li>The diffusion, as one rectangle that covers both the <tt class="docutils literal">LCW</tt> and the <tt class="docutils literal">RCW</tt> (<tt class="docutils literal">RDS_NDIF</tt>).</li>
|
||||
<li>The active area (<tt class="docutils literal">RDS_ACTIV</tt>).</li>
|
||||
<li>The N implantation (<tt class="docutils literal">RDS_NIMP</tt>).</li>
|
||||
</ol>
|
||||
<p>In the layout send to the foundry, the source & drain are draw as one rectangle
|
||||
across the gate area (the transistor being defined by the intersection of both
|
||||
rectangles).</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p><span class="raw-html"><br></span></p>
|
||||
</div>
|
||||
<div class="section" id="the-mbk-to-rds-via-table">
|
||||
<h2><a class="toc-backref" href="#id5">The <tt class="docutils literal">MBK_TO_RDS_VIA</tt> table</a></h2>
|
||||
<p>This table is to translate <em>default</em> VIAs into real via. In the symbolic layout
|
||||
the default VIA is simply a point and a set of layers. All layers are converted
|
||||
in squares shapes centered on the VIA coordinate. The one dimension given is the
|
||||
size of the side of that square.</p>
|
||||
<p>Note that although we are refering to VIAs, which for the purists are between two
|
||||
metal layers, this table also describe <em>contacts</em>.</p>
|
||||
<p>Example:</p>
|
||||
<pre class="literal-block">
|
||||
TABLE MBK_TO_RDS_VIA
|
||||
|
||||
CONT_DIF_P RDS_PDIF 0.54 ALL \
|
||||
RDS_CONT 0.18 ALL \
|
||||
RDS_ALU1 0.36 ALL \
|
||||
RDS_ACTIV 0.54 DRC \
|
||||
RDS_PIMP 0.90 DRC
|
||||
|
||||
CONT_POLY RDS_POLY 0.54 ALL \
|
||||
RDS_CONT 0.18 ALL \
|
||||
RDS_ALU1 0.36 ALL
|
||||
|
||||
CONT_VIA RDS_ALU1 0.45 ALL \
|
||||
RDS_VIA1 0.27 ALL \
|
||||
RDS_ALU2 0.45 ALL
|
||||
|
||||
END
|
||||
</pre>
|
||||
<div class="note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last"><strong>In CONT_DIF_P</strong> you may see that only three layers will be shown under
|
||||
<tt class="docutils literal">graal</tt>, but five will be generated in the <tt class="docutils literal">gds</tt> layout.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="the-mbk-to-rds-bigvia-hole-table">
|
||||
<h2><a class="toc-backref" href="#id6">The <tt class="docutils literal">MBK_TO_RDS_BIGVIA_HOLE</tt> table</a></h2>
|
||||
<p>In <tt class="docutils literal">s2r</tt>, when generating BIGVIAs, the matrix of holes they contains is
|
||||
not draw relative to the position of the BIGVIA itself, but on a grid which
|
||||
is common througout all the design real layout. This is to allow overlap
|
||||
between two BIGVIA without risking the holes matrix to be not exactly overlapping.
|
||||
As a consequence, when visualizing the <tt class="docutils literal">gds</tt> file, the holes may not be centerend
|
||||
inside one individual BIGVIA.</p>
|
||||
<p>The <tt class="docutils literal">MBK_TO_RDS_BIGVIA_HOLE</tt> table define the global hole matrix for the whole
|
||||
design. The first number is the individual hole side and the second the grid step
|
||||
(center to center).</p>
|
||||
<p>Example:</p>
|
||||
<pre class="literal-block">
|
||||
TABLE MBK_TO_RDS_BIGVIA_HOLE
|
||||
|
||||
CONT_VIA RDS_VIA1 0.27 0.27 ALL
|
||||
CONT_VIA2 RDS_VIA2 0.27 0.27 ALL
|
||||
CONT_VIA3 RDS_VIA3 0.27 0.27 ALL
|
||||
CONT_VIA4 RDS_VIA4 0.27 0.27 ALL
|
||||
CONT_VIA5 RDS_VIA5 0.36 0.36 ALL
|
||||
|
||||
END
|
||||
</pre>
|
||||
<p><span class="raw-html"><br></span></p>
|
||||
</div>
|
||||
<div class="section" id="the-mbk-to-rds-bigvia-metal-table">
|
||||
<h2><a class="toc-backref" href="#id7">The <tt class="docutils literal">MBK_TO_RDS_BIGVIA_METAL</tt> table</a></h2>
|
||||
<p>This table describe how the metal part of a BIGVIA is expanded (for the hole
|
||||
part, see the previous table <tt class="docutils literal">MBK_TO_RDS_BIGVIA_HOLE</tt>). The rule give for each
|
||||
metal:</p>
|
||||
<ol class="arabic simple">
|
||||
<li>The <em>delta-with</em> (have to ask Franck).</li>
|
||||
<li>The <em>overhang</em>, the length the real rectangle is expanded on each side from
|
||||
the symbolic rectange.</li>
|
||||
</ol>
|
||||
<p>Example:</p>
|
||||
<pre class="literal-block">
|
||||
TABLE MBK_TO_RDS_BIGVIA_METAL
|
||||
|
||||
CONT_VIA RDS_ALU1 0.0 0.09 ALL \
|
||||
RDS_ALU2 0.0 0.09 ALL
|
||||
|
||||
CONT_VIA2 RDS_ALU2 0.0 0.09 ALL \
|
||||
RDS_ALU3 0.0 0.09 ALL
|
||||
|
||||
CONT_VIA3 RDS_ALU3 0.0 0.09 ALL \
|
||||
RDS_ALU4 0.0 0.09 ALL
|
||||
|
||||
CONT_VIA4 RDS_ALU4 0.0 0.09 ALL \
|
||||
RDS_ALU5 0.0 0.09 ALL
|
||||
|
||||
CONT_VIA5 RDS_ALU5 0.0 0.09 ALL \
|
||||
RDS_ALU6 0.0 0.18 ALL
|
||||
|
||||
END
|
||||
</pre>
|
||||
<p><span class="raw-html"><br></span></p>
|
||||
</div>
|
||||
<div class="section" id="the-mbk-wiresetting-table">
|
||||
<h2><a class="toc-backref" href="#id8">The <tt class="docutils literal">MBK_WIRESETTING</tt> table</a></h2>
|
||||
<p>From a strict standpoint this table shouldn't be here but put in a separate
|
||||
configuration file, because it contains informations only used by the symbolic
|
||||
layout tools (<tt class="docutils literal">ocp</tt>, <tt class="docutils literal">nero</tt>, <tt class="docutils literal">ring</tt>).</p>
|
||||
<p>This table defines the cell gauge the routing pitch and minimal (symbolic)
|
||||
wire width and minimal spacing for the routers. They are patly redundant.</p>
|
||||
<p>Example:</p>
|
||||
<pre class="literal-block">
|
||||
TABLE MBK_WIRESETTING
|
||||
|
||||
X_GRID 10
|
||||
Y_GRID 10
|
||||
Y_SLICE 100
|
||||
WIDTH_VDD 12
|
||||
WIDTH_VSS 12
|
||||
TRACK_WIDTH_ALU8 0
|
||||
TRACK_WIDTH_ALU7 4
|
||||
TRACK_WIDTH_ALU6 4
|
||||
TRACK_WIDTH_ALU5 4
|
||||
TRACK_WIDTH_ALU4 3
|
||||
TRACK_WIDTH_ALU3 3
|
||||
TRACK_WIDTH_ALU2 3
|
||||
TRACK_WIDTH_ALU1 3
|
||||
TRACK_SPACING_ALU8 0
|
||||
TRACK_SPACING_ALU7 4
|
||||
TRACK_SPACING_ALU6 4
|
||||
TRACK_SPACING_ALU5 4
|
||||
TRACK_SPACING_ALU4 4
|
||||
TRACK_SPACING_ALU3 4
|
||||
TRACK_SPACING_ALU2 4
|
||||
TRACK_SPACING_ALU1 3
|
||||
|
||||
END
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,349 @@
|
|||
.. -*- Mode: rst -*-
|
||||
|
||||
.. role:: ul
|
||||
.. role:: cb
|
||||
.. role:: sc
|
||||
.. role:: fboxtt
|
||||
|
||||
.. Acronyms & names.
|
||||
.. |GNU| replace:: :sc:`gnu`
|
||||
.. |LGPL| replace:: :sc:`lgpl`
|
||||
.. |GPL| replace:: :sc:`gpl`
|
||||
.. |UPMC| replace:: :sc:`upmc`
|
||||
.. |RDS| replace:: :sc:`rds`
|
||||
|
||||
.. Tools
|
||||
.. |ocp| replace:: ``ocp``
|
||||
.. |nero| replace:: ``nero``
|
||||
.. |ring| replace:: ``ring``
|
||||
.. |s2r| replace:: ``s2r``
|
||||
.. |druc| replace:: ``druc``
|
||||
.. |graal| replace:: ``graal``
|
||||
.. |cougar| replace:: ``cougar``
|
||||
.. |cif| replace:: ``cif``
|
||||
.. |gds| replace:: ``gds``
|
||||
|
||||
.. RDS file syntax.
|
||||
.. |MBK_TO_RDS_SEGMENT| replace:: ``MBK_TO_RDS_SEGMENT``
|
||||
.. |MBK_TO_RDS_VIA| replace:: ``MBK_TO_RDS_VIA``
|
||||
.. |MBK_TO_RDS_BIGVIA_HOLE| replace:: ``MBK_TO_RDS_BIGVIA_HOLE``
|
||||
.. |MBK_TO_RDS_BIGVIA_METAL| replace:: ``MBK_TO_RDS_BIGVIA_METAL``
|
||||
.. |MBK_WIRESETTING| replace:: ``MBK_WIRESETTING``
|
||||
.. |ALL| replace:: ``ALL``
|
||||
.. |DRC| replace:: ``DRC``
|
||||
.. |EXT| replace:: ``EXT``
|
||||
.. |VW| replace:: ``VW``
|
||||
.. |LCW| replace:: ``LCW``
|
||||
.. |RCW| replace:: ``RCW``
|
||||
.. |ALU1| replace:: ``ALU1``
|
||||
.. |NDIF| replace:: ``NDIF``
|
||||
.. |NTRANS| replace:: ``NTRANS``
|
||||
.. |CONT_DIF_P| replace:: ``CONT_DIF_P``
|
||||
.. |RDS_NDIF| replace:: ``RDS_NDIF``
|
||||
.. |RDS_NIMP| replace:: ``RDS_NIMP``
|
||||
.. |RDS_ACTIV| replace:: ``RDS_ACTIV``
|
||||
.. |RDS_GATE| replace:: ``RDS_GATE``
|
||||
.. |RDS_POLY| replace:: ``RDS_POLY``
|
||||
.. |RDS_ALU1| replace:: ``RDS_ALU1``
|
||||
|
||||
|
||||
:Date: 16, september 2014
|
||||
:Authors: Jean-Paul Chaput
|
||||
:Contact: <alliance-users@soc.lip6.fr>
|
||||
:Version: 0.1
|
||||
|
||||
|medskip|
|
||||
|
||||
**Disclaimer:** This document is still far from complete.
|
||||
|
||||
|medskip|
|
||||
|
||||
===============
|
||||
RDS File Format
|
||||
===============
|
||||
|
||||
|
||||
.. contents::
|
||||
|
||||
|medskip|
|
||||
|
||||
|newpage|
|
||||
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
|
||||
The RDS file control how a symbolic layout is transformed into it's real
|
||||
conterpart.
|
||||
|
||||
.. note:: **Unit used inside the RDS file:** all units are expressed in micrometers.
|
||||
|
||||
Alliance tools relying on the RDS file, and what layers are active for them:
|
||||
|
||||
======================================= ============= ===============================
|
||||
Tool Name RDS Flags
|
||||
======================================= ============= ===============================
|
||||
Layout editor |graal| |ALL|
|
||||
Design Rule Checker |druc| |ALL|, |DRC|
|
||||
Electrical extractor |cougar| |ALL|, |EXT|
|
||||
The symbolic to real layout translator |s2r| |ALL|
|
||||
======================================= ============= ===============================
|
||||
|
||||
|
||||
Physical Grid & Lambda Value
|
||||
============================
|
||||
|
||||
RDS file: ::
|
||||
|
||||
DEFINE PHYSICAL_GRID 0.005
|
||||
DEFINE LAMBDA 0.09
|
||||
|
||||
Tells that the physical grid (founder grid) step is 0.005µm and the lambda has
|
||||
a value of 0.09µm. That is, one lambda is 18 grid steps.
|
||||
|
||||
We can distinguish two kind of |RDS| files:
|
||||
|
||||
* The *1µm* kind, odd segment widths and coordinates are allowed, but the ``LAMBDA``
|
||||
value **must** represent an *even* number of foundry grid step.
|
||||
* The *2µm* kind, segments widths and coordinates must all be even. And in that case
|
||||
the ``LAMBDA`` value can be any multiple of the foundry grid.
|
||||
|
||||
|
||||
The |MBK_TO_RDS_SEGMENT| table
|
||||
==============================
|
||||
|
||||
The |MBK_TO_RDS_SEGMENT| table control the way segments are translated into
|
||||
real rectangles. Be aware that we are translating *segments* and not *rectangles*.
|
||||
Segments are defined by their axis (source & target points) and their width.
|
||||
The geometrical transformations are described according to that model.
|
||||
Obviously, they are either horizontal or vertical.
|
||||
|
||||
The translation method of a symbolic segment is as follow:
|
||||
|
||||
1. The segment is translated into one or more physical rectangles.
|
||||
The generated rectangles depends on the tool which is actually
|
||||
using |RDS| and the flag for the considered real layer.
|
||||
For instance, real layers flagged with |DRC| will be generated
|
||||
for |s2r| (for the |cif| or |gds|) and |druc|, but will not
|
||||
be shown under |graal|.
|
||||
|
||||
2. Translation into one real layer. *First* the source & target coordinates and width
|
||||
of the symbolic segment are multiplied by the ``LAMBDA`` value to obtain a real
|
||||
segment. *Then* one of the |VW|, |LCW| or |RCW| transformation is applied to
|
||||
that segment to get the final real rectangle.
|
||||
|
||||
* |VW| for Variable Width, expand the real layer staying centered from the
|
||||
original one. In those rules, the third number is not used, it is only here
|
||||
to make the life easier for the parser...
|
||||
|
||||
|RDS_VW|
|
||||
|
||||
* |LCW| or |RCW| for Left/Right Constant Width, create an off-center rectangle
|
||||
of fixed width relatively to the real segment. Note that the ``SP`` number
|
||||
is the distance *between the edge* of the real segment and the edge of the
|
||||
generated real rectangle (*not* from the axis). It is often zero.
|
||||
|
||||
|RDS_LCW|
|
||||
|
||||
|
||||
|newpage|
|
||||
|
||||
Examples: ::
|
||||
|
||||
TABLE MBK_TO_RDS_SEGMENT
|
||||
|
||||
# (Case 1)
|
||||
ALU1 RDS_ALU1 VW 0.18 0.09 0.0 ALL
|
||||
|
||||
# (Case 2)
|
||||
NDIF RDS_NDIF VW 0.18 0.0 0.0 ALL \
|
||||
RDS_ACTIV VW 0.18 0.0 0.0 DRC \
|
||||
RDS_NIMP VW 0.36 0.36 0.0 DRC
|
||||
|
||||
# (Case 3)
|
||||
NTRANS RDS_POLY VW 0.27 0.00 0.0 ALL \
|
||||
RDS_GATE VW 0.27 0.00 0.0 DRC \
|
||||
RDS_NDIF LCW 0.0 0.27 0.0 EXT \
|
||||
RDS_NDIF RCW 0.0 0.27 0.0 EXT \
|
||||
RDS_NDIF VW 0.0 0.72 0.0 DRC \
|
||||
RDS_ACTIV VW 0.0 0.72 0.0 ALL \
|
||||
RDS_NIMP VW 0.18 1.26 0.0 DRC
|
||||
|
||||
END
|
||||
|
||||
:fboxtt:`Case 1` the |ALU1| is translated in exacltly one real rectangle of
|
||||
|RDS_ALU1|, both ends are extended by 0.18µm and it's width is increased
|
||||
by 0.09µm.
|
||||
|
||||
:fboxtt:`Case 2` the |NDIF| will be translated into only one segment
|
||||
under |graal|, for symbolic visualization. And into three real rectangles
|
||||
for |s2r| and |druc|.
|
||||
|
||||
:fboxtt:`Case 3` the |NTRANS|, associated to a transistor is a little bit
|
||||
more complex, the generated shapes are different for the extractor |cougar|
|
||||
in one hand, and for both |druc| & |s2r| in the other hand.
|
||||
|
||||
* For the extractor (|EXT| & |ALL| flags) there will be four rectangles
|
||||
generateds:
|
||||
|
||||
1. The gate (|RDS_GATE|)
|
||||
2. The left diffusion of the transistor (source or drain) (|RDS_NDIF|).
|
||||
3. The right diffusion of the transistor (drain or source) (|RDS_NDIF|).
|
||||
4. The active area (|RDS_ACTIV|).
|
||||
|
||||
As the extractor must kept separate the source and the drain of the transistor,
|
||||
they are generated as two offset rectangles, using the |LCW| and |RCW| directives.
|
||||
|
||||
* For |s2r| and |druc| (|DRC| and |ALL|), five rectangles are generateds:
|
||||
|
||||
1. The poly (|RDS_POLY|).
|
||||
2. The gate (|RDS_GATE|).
|
||||
3. The diffusion, as one rectangle that covers both the |LCW| and the |RCW| (|RDS_NDIF|).
|
||||
4. The active area (|RDS_ACTIV|).
|
||||
5. The N implantation (|RDS_NIMP|).
|
||||
|
||||
In the layout send to the foundry, the source & drain are draw as one rectangle
|
||||
across the gate area (the transistor being defined by the intersection of both
|
||||
rectangles).
|
||||
|
||||
|
||||
|newpage|
|
||||
|
||||
The |MBK_TO_RDS_VIA| table
|
||||
==========================
|
||||
|
||||
This table is to translate *default* VIAs into real via. In the symbolic layout
|
||||
the default VIA is simply a point and a set of layers. All layers are converted
|
||||
in squares shapes centered on the VIA coordinate. The one dimension given is the
|
||||
size of the side of that square.
|
||||
|
||||
Note that although we are refering to VIAs, which for the purists are between two
|
||||
metal layers, this table also describe *contacts*.
|
||||
|
||||
Example: ::
|
||||
|
||||
TABLE MBK_TO_RDS_VIA
|
||||
|
||||
CONT_DIF_P RDS_PDIF 0.54 ALL \
|
||||
RDS_CONT 0.18 ALL \
|
||||
RDS_ALU1 0.36 ALL \
|
||||
RDS_ACTIV 0.54 DRC \
|
||||
RDS_PIMP 0.90 DRC
|
||||
|
||||
CONT_POLY RDS_POLY 0.54 ALL \
|
||||
RDS_CONT 0.18 ALL \
|
||||
RDS_ALU1 0.36 ALL
|
||||
|
||||
CONT_VIA RDS_ALU1 0.45 ALL \
|
||||
RDS_VIA1 0.27 ALL \
|
||||
RDS_ALU2 0.45 ALL
|
||||
|
||||
END
|
||||
|
||||
.. note:: **In CONT_DIF_P** you may see that only three layers will be shown under
|
||||
|graal|, but five will be generated in the |gds| layout.
|
||||
|
||||
|
||||
The |MBK_TO_RDS_BIGVIA_HOLE| table
|
||||
==================================
|
||||
|
||||
In |s2r|, when generating BIGVIAs, the matrix of holes they contains is
|
||||
not draw relative to the position of the BIGVIA itself, but on a grid which
|
||||
is common througout all the design real layout. This is to allow overlap
|
||||
between two BIGVIA without risking the holes matrix to be not exactly overlapping.
|
||||
As a consequence, when visualizing the |gds| file, the holes may not be centerend
|
||||
inside one individual BIGVIA.
|
||||
|
||||
The |MBK_TO_RDS_BIGVIA_HOLE| table define the global hole matrix for the whole
|
||||
design. The first number is the individual hole side and the second the grid step
|
||||
(center to center).
|
||||
|
||||
Example: ::
|
||||
|
||||
TABLE MBK_TO_RDS_BIGVIA_HOLE
|
||||
|
||||
CONT_VIA RDS_VIA1 0.27 0.27 ALL
|
||||
CONT_VIA2 RDS_VIA2 0.27 0.27 ALL
|
||||
CONT_VIA3 RDS_VIA3 0.27 0.27 ALL
|
||||
CONT_VIA4 RDS_VIA4 0.27 0.27 ALL
|
||||
CONT_VIA5 RDS_VIA5 0.36 0.36 ALL
|
||||
|
||||
END
|
||||
|
||||
|
||||
|newpage|
|
||||
|
||||
The |MBK_TO_RDS_BIGVIA_METAL| table
|
||||
===================================
|
||||
|
||||
This table describe how the metal part of a BIGVIA is expanded (for the hole
|
||||
part, see the previous table |MBK_TO_RDS_BIGVIA_HOLE|). The rule give for each
|
||||
metal:
|
||||
|
||||
1. The *delta-with* (have to ask Franck).
|
||||
2. The *overhang*, the length the real rectangle is expanded on each side from
|
||||
the symbolic rectange.
|
||||
|
||||
Example: ::
|
||||
|
||||
TABLE MBK_TO_RDS_BIGVIA_METAL
|
||||
|
||||
CONT_VIA RDS_ALU1 0.0 0.09 ALL \
|
||||
RDS_ALU2 0.0 0.09 ALL
|
||||
|
||||
CONT_VIA2 RDS_ALU2 0.0 0.09 ALL \
|
||||
RDS_ALU3 0.0 0.09 ALL
|
||||
|
||||
CONT_VIA3 RDS_ALU3 0.0 0.09 ALL \
|
||||
RDS_ALU4 0.0 0.09 ALL
|
||||
|
||||
CONT_VIA4 RDS_ALU4 0.0 0.09 ALL \
|
||||
RDS_ALU5 0.0 0.09 ALL
|
||||
|
||||
CONT_VIA5 RDS_ALU5 0.0 0.09 ALL \
|
||||
RDS_ALU6 0.0 0.18 ALL
|
||||
|
||||
END
|
||||
|
||||
|
||||
|newpage|
|
||||
|
||||
The |MBK_WIRESETTING| table
|
||||
===========================
|
||||
|
||||
From a strict standpoint this table shouldn't be here but put in a separate
|
||||
configuration file, because it contains informations only used by the symbolic
|
||||
layout tools (|ocp|, |nero|, |ring|).
|
||||
|
||||
This table defines the cell gauge the routing pitch and minimal (symbolic)
|
||||
wire width and minimal spacing for the routers. They are patly redundant.
|
||||
|
||||
Example: ::
|
||||
|
||||
TABLE MBK_WIRESETTING
|
||||
|
||||
X_GRID 10
|
||||
Y_GRID 10
|
||||
Y_SLICE 100
|
||||
WIDTH_VDD 12
|
||||
WIDTH_VSS 12
|
||||
TRACK_WIDTH_ALU8 0
|
||||
TRACK_WIDTH_ALU7 4
|
||||
TRACK_WIDTH_ALU6 4
|
||||
TRACK_WIDTH_ALU5 4
|
||||
TRACK_WIDTH_ALU4 3
|
||||
TRACK_WIDTH_ALU3 3
|
||||
TRACK_WIDTH_ALU2 3
|
||||
TRACK_WIDTH_ALU1 3
|
||||
TRACK_SPACING_ALU8 0
|
||||
TRACK_SPACING_ALU7 4
|
||||
TRACK_SPACING_ALU6 4
|
||||
TRACK_SPACING_ALU5 4
|
||||
TRACK_SPACING_ALU4 4
|
||||
TRACK_SPACING_ALU3 4
|
||||
TRACK_SPACING_ALU2 4
|
||||
TRACK_SPACING_ALU1 3
|
||||
|
||||
END
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
.. -*- Mode: rst -*-
|
||||
|
||||
.. include:: HTML_defs.rst
|
||||
.. include:: RDS.rst
|
|
@ -0,0 +1,4 @@
|
|||
.. -*- Mode: rst -*-
|
||||
|
||||
.. include:: LaTeX_defs.rst
|
||||
.. include:: RDS.rst
|
|
@ -0,0 +1,790 @@
|
|||
|
||||
html, body, th, td, tr, p, li, h1, h2, h3, h4, h5, h6 {
|
||||
font-size: 96%;
|
||||
/*
|
||||
font-family: verdana, sans-serif;
|
||||
*/
|
||||
font-family: "Open Sans", sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
color: black;
|
||||
background: white;
|
||||
/*
|
||||
background: #09550B;
|
||||
background-color: white;
|
||||
*/
|
||||
background-position: top left;
|
||||
background-attachment: fixed;
|
||||
background-repeat: no-repeat;
|
||||
margin: 0 0 0 0;
|
||||
padding: 0 0 0 0;
|
||||
margin-right: 10%;
|
||||
margin-left: 30%;
|
||||
}
|
||||
|
||||
body.gsummary {
|
||||
margin-right: 10%;
|
||||
margin-left: 10%;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-family: "Open Sans", sans-serif;
|
||||
}
|
||||
|
||||
h1 { text-align: left; }
|
||||
h2, h3, h4, h5, h6 { text-align: left; }
|
||||
h1, h2, h3 { font-family: "Serif";
|
||||
}
|
||||
h1 { font-weight: normal; font-size: 170%; padding-top: 7pt; margin-top: 25pt; }
|
||||
h2 { font-weight: normal; font-size: 140%; padding-top: 7pt; margin-top: 25pt; }
|
||||
h3 { font-weight: bold; font-size: 118%; padding-top: 7pt; margin-top: 25pt; }
|
||||
h4 { font-weight: bold; font-size: 100%; }
|
||||
h5 { font-style: italic; font-size: 100%; }
|
||||
h6 { font-variant: small-caps; font-size: 100%; }
|
||||
|
||||
body.gsummary h1 { text-align: center; font-size: 220%; }
|
||||
|
||||
hr {
|
||||
color: #09550b;
|
||||
border: 1px dotted #09550b;
|
||||
border-style: none none dotted;
|
||||
padding-top: 10pt;
|
||||
padding-bottom: 10pt;
|
||||
}
|
||||
|
||||
div#contents {
|
||||
margin: 30pt;
|
||||
padding: 2pt 10pt;
|
||||
background-color: #fff676;
|
||||
}
|
||||
|
||||
div#centered {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
p, li {
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
.sc {
|
||||
font-variant: small-caps;
|
||||
font-size: 110%;
|
||||
}
|
||||
|
||||
pre, tt, code {
|
||||
font-family: "courrier", "andale mono", monospace;
|
||||
font-size: 100%;
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
tt {
|
||||
color: #09550b;
|
||||
}
|
||||
|
||||
pre.wiki, div.code, pre.literal-block {
|
||||
font-size: 90%;
|
||||
padding: 5pt;
|
||||
margin-left: 4%;
|
||||
margin-right: 4%;
|
||||
border: dashed;
|
||||
border-width: thin;
|
||||
border-color: #FC8676;
|
||||
background-color: #FCFCE1;
|
||||
}
|
||||
|
||||
a:link, a:active {
|
||||
font-weight: normal;
|
||||
text-decoration: none;
|
||||
color: #09550b;
|
||||
border-bottom: 1px dotted #09550b;
|
||||
}
|
||||
|
||||
a:hover, a:focus, a:visited {
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
text-decoration: none;
|
||||
/*
|
||||
color: #A40010;
|
||||
border-bottom: 1px dotted #A40010;
|
||||
*/
|
||||
color: #09550b;
|
||||
border-bottom: 1px dotted #09550b;
|
||||
}
|
||||
|
||||
body.gsummary a:link, a:active {
|
||||
font-size: 140%;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
color: #09550b;
|
||||
border-bottom: none;
|
||||
/*
|
||||
border-bottom: 1px dotted #09550b;
|
||||
*/
|
||||
}
|
||||
|
||||
body.gsummary a:hover, a:focus, a:visited {
|
||||
font-size: 120%;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
text-decoration: none;
|
||||
/*
|
||||
color: #A40010;
|
||||
border-bottom: 1px dotted #A40010;
|
||||
*/
|
||||
color: #09550b;
|
||||
/*
|
||||
border-bottom: 1px dotted #09550b;
|
||||
*/
|
||||
}
|
||||
|
||||
p.credit {
|
||||
margin-left: 10%;
|
||||
margin-right: 10%;
|
||||
font-size: 110%;
|
||||
}
|
||||
|
||||
p.credit span.left {
|
||||
float: left;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
p.credit span.right {
|
||||
float: right;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
img.addborder {
|
||||
border: 1px solid black;
|
||||
}
|
||||
|
||||
div#header {
|
||||
margin: 0px;
|
||||
padding: 0pt;
|
||||
background-color: white;
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
div#header_logo {
|
||||
margin: 0px;
|
||||
padding: 10px 0px 10px 12pt;
|
||||
background-color: white;
|
||||
width: 40%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
div#header_menus {
|
||||
background-color: white;
|
||||
width: 55%;
|
||||
float: right;
|
||||
padding-top: 60pt;
|
||||
padding-right: 10pt;
|
||||
text-align: right;
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
div#header_menus ul {
|
||||
padding-top: 45pt;
|
||||
list-style: none;
|
||||
text-align: right;
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
div#header_menus li {
|
||||
padding: 0pt;
|
||||
margin: 0pt;
|
||||
display: inline;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/*
|
||||
div#header_menus a {
|
||||
border-left: 1px solid #d7d7d7;
|
||||
padding: 0 .75em;
|
||||
}
|
||||
|
||||
div#header_menus a.first {
|
||||
border-left: none;
|
||||
}
|
||||
*/
|
||||
|
||||
div#header a:link, div#header a:active, div#header a:visited {
|
||||
margin: 0pt;
|
||||
padding: 0pt 5pt;
|
||||
font-weight: normal;
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid black;
|
||||
border-left: 0px;
|
||||
border-right: 0px;
|
||||
}
|
||||
|
||||
div#header a:hover, div#header a:focus {
|
||||
margin: 0pt;
|
||||
padding: 0pt 5pt;
|
||||
font-weight: normal;
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
border-bottom: 4px solid #09550b;
|
||||
border-left: 0px;
|
||||
border-right: 0px;
|
||||
}
|
||||
|
||||
div#header a.current:link, div#header a.current:active, div#header a.current:visited {
|
||||
margin: 0pt;
|
||||
padding: 0pt 5pt;
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
font-size: 120%;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
border-bottom: 4px solid #09550b;
|
||||
border-left: 0px;
|
||||
border-right: 0px;
|
||||
background-color: #09550b;
|
||||
}
|
||||
|
||||
div#header a.current:hover, div#header a.current:focus {
|
||||
margin: 0pt;
|
||||
padding: 0pt 5pt;
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
font-size: 120%;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
border-bottom: 4px solid #09550b;
|
||||
border-left: 0px;
|
||||
border-right: 0px;
|
||||
background-color: #09550b;
|
||||
}
|
||||
|
||||
div#header_ancestors {
|
||||
padding: 4px 0px 4px 12pt;
|
||||
background-color: #09550B;
|
||||
color: white;
|
||||
}
|
||||
|
||||
div#header_ancestors ul, div#header_ancestors * li {
|
||||
display: inline;
|
||||
list-style-type: none;
|
||||
padding: 0px 0px 0px 0pt;
|
||||
}
|
||||
|
||||
div#header_ancestors a:link, div#header_ancestors a:active, div#header_ancestors a:visited {
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
border-bottom: 0px;
|
||||
}
|
||||
|
||||
div#header_ancestors a:hover, div#header_ancestors a:focus {
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
div#footer {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
border-top: 1px dotted #09550b;
|
||||
background-color: white;
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
div#searchform {
|
||||
width: 80%;
|
||||
background-color: #ccffcd;
|
||||
padding: 15pt 10pt 15pt 10pt;
|
||||
margin-top: 50pt;
|
||||
margin-bottom: 50pt;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div#searchform input#id_q {
|
||||
background-color: white;
|
||||
border: 1px solid #09550b;
|
||||
padding: 2pt;
|
||||
width: 80%;
|
||||
font-size: 110%;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
span.queryref {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div#searchform ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
div#searchform li {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
hr#search_vs_results {
|
||||
color: #09550b;
|
||||
border: 2px dotted #09550b;
|
||||
border-style: none none dotted;
|
||||
margin-top: 0pt;
|
||||
margin-bottom: 20pt;
|
||||
}
|
||||
|
||||
div#search_results {
|
||||
width: 85%;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
div#sidebar hr#separator {
|
||||
color: white;
|
||||
border: 0px;
|
||||
margin-top: 0pt;
|
||||
margin-bottom: 20pt;
|
||||
}
|
||||
|
||||
img.footer-logo {
|
||||
height: 24px;
|
||||
padding: 0px 2px;
|
||||
}
|
||||
|
||||
hr#site_vs_page {
|
||||
color: white;
|
||||
border: 3px dotted white;
|
||||
border-style: none none dotted;
|
||||
margin-top: 20pt;
|
||||
margin-bottom: 20pt;
|
||||
}
|
||||
|
||||
div#sidebar {
|
||||
/*
|
||||
background: #09550B;
|
||||
background: #ccffcd;
|
||||
*/
|
||||
background: white;
|
||||
}
|
||||
|
||||
div#sidebar div#sitemenu, div#sidebar div#pagemenu {
|
||||
/*
|
||||
background: white;
|
||||
*/
|
||||
background: #09550b;
|
||||
width: 85%;
|
||||
margin: auto;
|
||||
padding: 5pt 10pt;
|
||||
}
|
||||
|
||||
div#sidebar * li {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
div#sidebar * ul {
|
||||
list-style-type: square;
|
||||
padding-left: 12pt;
|
||||
}
|
||||
|
||||
div#sitemenu ul {
|
||||
list-style-type: none;
|
||||
padding-left: 0pt;
|
||||
}
|
||||
|
||||
div#sitemenu ul ul {
|
||||
list-style-type: none;
|
||||
padding-left: 0pt;
|
||||
}
|
||||
|
||||
div#sitemenu ul ul ul {
|
||||
list-style-type: square;
|
||||
padding-left: 12pt;
|
||||
}
|
||||
|
||||
div#sitemenu ul li ul li {
|
||||
padding-top: 3pt;
|
||||
padding-bottom: 5pt;
|
||||
border-top: 1px dotted white;
|
||||
}
|
||||
|
||||
div#sitemenu ul li ul li ul li {
|
||||
border-top: none;
|
||||
padding-top: 1pt;
|
||||
padding-bottom: 1pt;
|
||||
}
|
||||
|
||||
div#sitemenu ul li a:link,
|
||||
div#sitemenu ul li a:active,
|
||||
div#sitemenu ul lu a:visited
|
||||
{
|
||||
font-size: 140%;
|
||||
font-weight: bold;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
div#sitemenu ul li a:focus,
|
||||
div#sitemenu ul lu a:hover
|
||||
{
|
||||
font-size: 140%;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
div#sitemenu ul ul li a:link,
|
||||
div#sitemenu ul ul li a:active,
|
||||
div#sitemenu ul ul lu a:visited,
|
||||
div#sitemenu ul ul li a:focus,
|
||||
div#sitemenu ul ul lu a:hover
|
||||
{
|
||||
font-size: 90%;
|
||||
font-weight: normal;
|
||||
border-bottom: none;
|
||||
/*border-bottom: 1px dotted white;*/
|
||||
}
|
||||
|
||||
div#pagemenu ul {
|
||||
list-style-type: none;
|
||||
padding-left: 0pt;
|
||||
}
|
||||
|
||||
div#pagemenu ul ul {
|
||||
list-style-type: none;
|
||||
padding-left: 0pt;
|
||||
}
|
||||
|
||||
div#pagemenu ul ul ul {
|
||||
padding-left: 12pt;
|
||||
}
|
||||
|
||||
div#pagemenu ul li ul li {
|
||||
padding-top: 3pt;
|
||||
padding-bottom: 5pt;
|
||||
border-top: 1px dotted white;
|
||||
}
|
||||
|
||||
div#pagemenu ul li ul li ul li {
|
||||
border-top: none;
|
||||
padding-top: 1pt;
|
||||
padding-bottom: 1pt;
|
||||
}
|
||||
|
||||
div#pagemenu ul li a:link,
|
||||
div#pagemenu ul li a:active,
|
||||
div#pagemenu ul lu a:visited
|
||||
{
|
||||
font-size: 120%;
|
||||
font-weight: bold;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
div#pagemenu ul li a:focus,
|
||||
div#pagemenu ul lu a:hover
|
||||
{
|
||||
font-size: 120%;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
div#pagemenu ul ul li a:link,
|
||||
div#pagemenu ul ul li a:active,
|
||||
div#pagemenu ul ul lu a:visited,
|
||||
div#pagemenu ul ul li a:focus,
|
||||
div#pagemenu ul ul lu a:hover
|
||||
{
|
||||
font-size: 90%;
|
||||
font-weight: normal;
|
||||
border-bottom: none;
|
||||
/*
|
||||
border-bottom: 1px dotted white;
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
div#sidebar ul.ancestor * li {
|
||||
padding-top: 0pt;
|
||||
}
|
||||
|
||||
div#sidebar ul {
|
||||
padding-bottom: 8pt;
|
||||
}
|
||||
|
||||
div#sidebar a:link, div#sidebar a:active, div#sidebar a:visited {
|
||||
/*
|
||||
font-weight: normal;
|
||||
*/
|
||||
color: white;
|
||||
text-align: left;
|
||||
text-decoration: none;
|
||||
border-bottom: 1px dotted white;
|
||||
}
|
||||
|
||||
div#sidebar a:hover, div#sidebar a:focus {
|
||||
/*
|
||||
font-weight: normal;
|
||||
*/
|
||||
color: white;
|
||||
text-align: left;
|
||||
text-decoration: none;
|
||||
border-bottom: 1px dotted white;
|
||||
}
|
||||
|
||||
div#main {
|
||||
border-left: 1px solid #09550b;
|
||||
}
|
||||
|
||||
div#main ul#summary {
|
||||
list-style-type: square;
|
||||
padding-left: 12pt;
|
||||
font-size: 14pt;
|
||||
}
|
||||
|
||||
div#main ul#summary * ul {
|
||||
padding-left: 12pt;
|
||||
padding-bottom: 14pt;
|
||||
font-size: 95%;
|
||||
}
|
||||
|
||||
div.code * {
|
||||
background-color: #FCFCE1;
|
||||
}
|
||||
|
||||
div.note {
|
||||
margin: 8px 2% 0px 2%;
|
||||
border: 1px none #fff01c;
|
||||
border-left-width: 4px;
|
||||
border-left-style: solid;
|
||||
padding: 1px 10pt 1px 55px;
|
||||
background: #fff676 url('./images/clipboard.png') no-repeat 0% 50%;;
|
||||
font-size: 90%
|
||||
}
|
||||
|
||||
div.error {
|
||||
margin: 8px 2% 0px 2%;
|
||||
border: 1px none #dd0000;
|
||||
border-left-width: 4px;
|
||||
border-left-style: solid;
|
||||
padding: 1px 10pt 1px 55px;
|
||||
background: #ffddcc url('./images/i-core.png') no-repeat 0% 50%;;
|
||||
font-size: 90%
|
||||
}
|
||||
|
||||
p.admonition-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.topic {
|
||||
margin: 5pt;
|
||||
padding: 2pt 10pt;
|
||||
background-color: fff676;
|
||||
}
|
||||
|
||||
div.topic p.first {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
body.gsummary table {
|
||||
border-collapse: collapse;
|
||||
border-color: transparent;
|
||||
width: 60%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
/*
|
||||
body.gsummary table th {
|
||||
}
|
||||
*/
|
||||
|
||||
body.gsummary table td {
|
||||
border: none;
|
||||
}
|
||||
|
||||
/*
|
||||
body.gsummary table tr td ul {
|
||||
margin: 0pt;
|
||||
border-left: 1px solid black;
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
body.gsummary table tr td ul li {
|
||||
border-bottom: 2px dotted black;
|
||||
}
|
||||
*/
|
||||
|
||||
body.gsummary li {
|
||||
padding: 0%;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
body.gsummary ul {
|
||||
padding: 0px 0px 10px 0px;
|
||||
margin: 0%;
|
||||
border-bottom: 1px dotted black;
|
||||
}
|
||||
|
||||
table.wiki th, table th {
|
||||
color: black;
|
||||
background: #FFFFCC;
|
||||
}
|
||||
|
||||
table.docutils {
|
||||
margin-left: 5%;
|
||||
margin-right: 5%;
|
||||
}
|
||||
|
||||
table.wiki, table.wiki th, table.wiki td { border: 1px solid black; }
|
||||
table.wiki th * p { text-align: center; }
|
||||
table.wiki * p { margin: 0pt; }
|
||||
table.wiki * blockquote { margin: 0pt; }
|
||||
table { border-collapse: collapse; }
|
||||
table th, table td { border: 1px solid black;
|
||||
padding: 2px 10px 2px 10px; }
|
||||
|
||||
table.docinfo {
|
||||
margin-top: 10pt;
|
||||
margin-left: auto;
|
||||
margin-right: 0pt;
|
||||
border: 10px solid #303030;
|
||||
border-collapse: collapse;
|
||||
background: #303030;
|
||||
font-size: 90%;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
table.docinfo tr {
|
||||
border-bottom: 1px dotted white;
|
||||
}
|
||||
|
||||
th.docinfo-name,
|
||||
table.docinfo td,
|
||||
table.docinfo td a:link,
|
||||
table.docinfo td a:active,
|
||||
table.docinfo td a:visited,
|
||||
table.docinfo td a:focus,
|
||||
table.docinfo td a:hover
|
||||
{
|
||||
border: 0px solid white;
|
||||
background: #303030;
|
||||
color: white;
|
||||
text-align: left;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
th.docinfo-name {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
table.docinfo td {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
span.ul {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
* span.smallcaps {
|
||||
/*font-variant: "small-caps";*/
|
||||
text-transform: "uppercase";
|
||||
font-size: "smaller";
|
||||
}
|
||||
|
||||
|
||||
span.cb {
|
||||
font-family: "andale mono", monospace;
|
||||
font-weight: bold;
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
span.fboxtt {
|
||||
border: 1px solid black;
|
||||
padding: 0px 4px;
|
||||
font-family: "andale mono", monospace;
|
||||
font-weight: bold;
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
#notice.system-message, .notice.system-message {
|
||||
color: black;
|
||||
background: #DDFFDD;
|
||||
padding-top: 5pt;
|
||||
padding-bottom: 5pt;
|
||||
border: 1px none #55BB55;
|
||||
border-top-width: 4px;
|
||||
border-top-style: solid;
|
||||
}
|
||||
|
||||
#content.error .message, div.system-message {
|
||||
color: #550000;
|
||||
background: #ffddcc;
|
||||
border: 2px none #dd0000;
|
||||
border-top-width: 4px;
|
||||
border-top-style: solid;
|
||||
padding: .5em;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
#main {
|
||||
float: right;
|
||||
width: 70%;
|
||||
padding: 0pt;
|
||||
margin: 0pt;
|
||||
min-height: 700px;
|
||||
background: white;
|
||||
}
|
||||
|
||||
div#main h1 {
|
||||
border-bottom: 2px solid #09550b;
|
||||
}
|
||||
|
||||
div#main div.section h1 {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
#cmscontent {
|
||||
padding: 0pt 4% 10pt 4%;
|
||||
margin: 0pt;
|
||||
}
|
||||
|
||||
div#htmlerrorcontents {
|
||||
padding: 10pt 4% 10pt 4%;
|
||||
margin: 0pt;
|
||||
}
|
||||
|
||||
div#htmlerrorcontents span.cs {
|
||||
font-size: 80%;
|
||||
font-family: "andale mono", monospace;
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
div#htmlerrorcontents hr.lang_separator {
|
||||
border: 1px dotted black;
|
||||
border-style: none none dotted;
|
||||
margin-top: 20pt;
|
||||
margin-bottom: 10pt;
|
||||
}
|
||||
|
||||
#embedcontent {
|
||||
border: 0pt;
|
||||
padding: 0pt;
|
||||
margin: 0pt;
|
||||
}
|
||||
|
||||
#sidebar {
|
||||
float: left;
|
||||
width: 29.9%;
|
||||
padding: 0 0 0 0;
|
||||
margin: 0 0 0 0;
|
||||
color: white;
|
||||
background: #09550B;
|
||||
/*
|
||||
min-height: 300px;
|
||||
background: #f2f2f2;
|
||||
border-right: 1px solid #ccc;
|
||||
padding: 0 0 0 10px;
|
||||
*/
|
||||
}
|
Binary file not shown.
|
@ -0,0 +1,238 @@
|
|||
%!PS-Adobe-2.0 EPSF-2.0
|
||||
%%Title: RDS_LCW.fig
|
||||
%%Creator: fig2dev Version 3.2 Patchlevel 5
|
||||
%%CreationDate: Mon Sep 15 18:23:48 2014
|
||||
%%For: jpc@lepka (Jean-Paul Chaput)
|
||||
%%BoundingBox: 0 0 233 348
|
||||
%Magnification: 0.8000
|
||||
%%EndComments
|
||||
/$F2psDict 200 dict def
|
||||
$F2psDict begin
|
||||
$F2psDict /mtrx matrix put
|
||||
/col-1 {0 setgray} bind def
|
||||
/col0 {0.000 0.000 0.000 srgb} bind def
|
||||
/col1 {0.000 0.000 1.000 srgb} bind def
|
||||
/col2 {0.000 1.000 0.000 srgb} bind def
|
||||
/col3 {0.000 1.000 1.000 srgb} bind def
|
||||
/col4 {1.000 0.000 0.000 srgb} bind def
|
||||
/col5 {1.000 0.000 1.000 srgb} bind def
|
||||
/col6 {1.000 1.000 0.000 srgb} bind def
|
||||
/col7 {1.000 1.000 1.000 srgb} bind def
|
||||
/col8 {0.000 0.000 0.560 srgb} bind def
|
||||
/col9 {0.000 0.000 0.690 srgb} bind def
|
||||
/col10 {0.000 0.000 0.820 srgb} bind def
|
||||
/col11 {0.530 0.810 1.000 srgb} bind def
|
||||
/col12 {0.000 0.560 0.000 srgb} bind def
|
||||
/col13 {0.000 0.690 0.000 srgb} bind def
|
||||
/col14 {0.000 0.820 0.000 srgb} bind def
|
||||
/col15 {0.000 0.560 0.560 srgb} bind def
|
||||
/col16 {0.000 0.690 0.690 srgb} bind def
|
||||
/col17 {0.000 0.820 0.820 srgb} bind def
|
||||
/col18 {0.560 0.000 0.000 srgb} bind def
|
||||
/col19 {0.690 0.000 0.000 srgb} bind def
|
||||
/col20 {0.820 0.000 0.000 srgb} bind def
|
||||
/col21 {0.560 0.000 0.560 srgb} bind def
|
||||
/col22 {0.690 0.000 0.690 srgb} bind def
|
||||
/col23 {0.820 0.000 0.820 srgb} bind def
|
||||
/col24 {0.500 0.190 0.000 srgb} bind def
|
||||
/col25 {0.630 0.250 0.000 srgb} bind def
|
||||
/col26 {0.750 0.380 0.000 srgb} bind def
|
||||
/col27 {1.000 0.500 0.500 srgb} bind def
|
||||
/col28 {1.000 0.630 0.630 srgb} bind def
|
||||
/col29 {1.000 0.750 0.750 srgb} bind def
|
||||
/col30 {1.000 0.880 0.880 srgb} bind def
|
||||
/col31 {1.000 0.840 0.000 srgb} bind def
|
||||
|
||||
end
|
||||
save
|
||||
newpath 0 348 moveto 0 0 lineto 233 0 lineto 233 348 lineto closepath clip newpath
|
||||
-114.1 389.4 translate
|
||||
1 -1 scale
|
||||
|
||||
/cp {closepath} bind def
|
||||
/ef {eofill} bind def
|
||||
/gr {grestore} bind def
|
||||
/gs {gsave} bind def
|
||||
/sa {save} bind def
|
||||
/rs {restore} bind def
|
||||
/l {lineto} bind def
|
||||
/m {moveto} bind def
|
||||
/rm {rmoveto} bind def
|
||||
/n {newpath} bind def
|
||||
/s {stroke} bind def
|
||||
/sh {show} bind def
|
||||
/slc {setlinecap} bind def
|
||||
/slj {setlinejoin} bind def
|
||||
/slw {setlinewidth} bind def
|
||||
/srgb {setrgbcolor} bind def
|
||||
/rot {rotate} bind def
|
||||
/sc {scale} bind def
|
||||
/sd {setdash} bind def
|
||||
/ff {findfont} bind def
|
||||
/sf {setfont} bind def
|
||||
/scf {scalefont} bind def
|
||||
/sw {stringwidth} bind def
|
||||
/tr {translate} bind def
|
||||
/tnt {dup dup currentrgbcolor
|
||||
4 -2 roll dup 1 exch sub 3 -1 roll mul add
|
||||
4 -2 roll dup 1 exch sub 3 -1 roll mul add
|
||||
4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
|
||||
bind def
|
||||
/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
|
||||
4 -2 roll mul srgb} bind def
|
||||
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
|
||||
/$F2psEnd {$F2psEnteredState restore end} def
|
||||
|
||||
$F2psBegin
|
||||
10 setmiterlimit
|
||||
0 slj 0 slc
|
||||
0.04800 0.04800 sc
|
||||
%
|
||||
% Fig objects follow
|
||||
%
|
||||
%
|
||||
% here starts figure with depth 60
|
||||
% Polyline
|
||||
0 slj
|
||||
0 slc
|
||||
15.000 slw
|
||||
n 3900 5700 m 3900 2700 l 4800 2700 l 4800 5700 l
|
||||
cp gs col18 0.50 tnt ef gr gs col18 s gr
|
||||
% here ends figure;
|
||||
%
|
||||
% here starts figure with depth 55
|
||||
% Polyline
|
||||
0 slj
|
||||
0 slc
|
||||
15.000 slw
|
||||
n 5100 6600 m 5100 1800 l 6300 1800 l 6300 6600 l
|
||||
cp gs col7 1.00 shd ef gr gs col0 s gr
|
||||
% here ends figure;
|
||||
%
|
||||
% here starts figure with depth 50
|
||||
% Polyline
|
||||
0 slj
|
||||
0 slc
|
||||
45.000 slw
|
||||
n 5625 1725 m
|
||||
5775 1875 l gs col0 s gr
|
||||
% Polyline
|
||||
n 5625 1875 m
|
||||
5775 1725 l gs col0 s gr
|
||||
% Polyline
|
||||
n 5625 6525 m
|
||||
5775 6675 l gs col0 s gr
|
||||
% Polyline
|
||||
n 5625 6675 m
|
||||
5775 6525 l gs col0 s gr
|
||||
% Polyline
|
||||
15.000 slw
|
||||
n 2400 900 m 5775 900 l 5775 1275 l 2400 1275 l
|
||||
cp gs col0 s gr
|
||||
/Courier-Bold ff 300.00 scf sf
|
||||
2550 1200 m
|
||||
gs 1 -1 sc (LCW) col18 sh gr
|
||||
/Courier-Bold ff 300.00 scf sf
|
||||
3450 1200 m
|
||||
gs 1 -1 sc (dL) col18 sh gr
|
||||
/Courier-Bold ff 300.00 scf sf
|
||||
5250 1200 m
|
||||
gs 1 -1 sc (SP) col18 sh gr
|
||||
/Courier-Bold ff 300.00 scf sf
|
||||
4350 1200 m
|
||||
gs 1 -1 sc (W) col18 sh gr
|
||||
% Polyline
|
||||
[90 45 15 45] 0 sd
|
||||
n 5700 1800 m
|
||||
5700 6600 l gs col0 s gr [] 0 sd
|
||||
% Polyline
|
||||
7.500 slw
|
||||
n 3225 2700 m
|
||||
3825 2700 l gs col0 s gr
|
||||
% Polyline
|
||||
n 5025 1800 m
|
||||
3225 1800 l gs col0 s gr
|
||||
% Polyline
|
||||
n 3825 5700 m
|
||||
3225 5700 l gs col0 s gr
|
||||
% Polyline
|
||||
n 5025 6600 m
|
||||
3225 6600 l gs col0 s gr
|
||||
% Polyline
|
||||
n 3900 5775 m
|
||||
3900 7575 l gs col0 s gr
|
||||
% Polyline
|
||||
n 4800 5775 m
|
||||
4800 7575 l gs col0 s gr
|
||||
% Polyline
|
||||
n 5100 6675 m 5100 6900 l 5400 7200 l
|
||||
5400 7575 l gs col0 s gr
|
||||
% Polyline
|
||||
gs clippath
|
||||
3270 2564 m 3270 2715 l 3330 2715 l 3330 2564 l 3330 2564 l 3300 2684 l 3270 2564 l cp
|
||||
3330 1936 m 3330 1785 l 3270 1785 l 3270 1936 l 3270 1936 l 3300 1816 l 3330 1936 l cp
|
||||
eoclip
|
||||
n 3300 1800 m
|
||||
3300 2700 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
n 3330 1936 m 3300 1816 l 3270 1936 l 3330 1936 l cp gs 0.00 setgray ef gr col0 s
|
||||
% arrowhead
|
||||
n 3270 2564 m 3300 2684 l 3330 2564 l 3270 2564 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
gs clippath
|
||||
3270 6464 m 3270 6615 l 3330 6615 l 3330 6464 l 3330 6464 l 3300 6584 l 3270 6464 l cp
|
||||
3330 5836 m 3330 5685 l 3270 5685 l 3270 5836 l 3270 5836 l 3300 5716 l 3330 5836 l cp
|
||||
eoclip
|
||||
n 3300 5700 m
|
||||
3300 6600 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
n 3330 5836 m 3300 5716 l 3270 5836 l 3330 5836 l cp gs 0.00 setgray ef gr col0 s
|
||||
% arrowhead
|
||||
n 3270 6464 m 3300 6584 l 3330 6464 l 3270 6464 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
gs clippath
|
||||
4664 7530 m 4815 7530 l 4815 7470 l 4664 7470 l 4664 7470 l 4784 7500 l 4664 7530 l cp
|
||||
4036 7470 m 3885 7470 l 3885 7530 l 4036 7530 l 4036 7530 l 3916 7500 l 4036 7470 l cp
|
||||
eoclip
|
||||
n 3900 7500 m
|
||||
4800 7500 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
n 4036 7470 m 3916 7500 l 4036 7530 l 4036 7470 l cp gs 0.00 setgray ef gr col0 s
|
||||
% arrowhead
|
||||
n 4664 7530 m 4784 7500 l 4664 7470 l 4664 7530 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
gs clippath
|
||||
5264 7530 m 5415 7530 l 5415 7470 l 5264 7470 l 5264 7470 l 5384 7500 l 5264 7530 l cp
|
||||
4936 7470 m 4785 7470 l 4785 7530 l 4936 7530 l 4936 7530 l 4816 7500 l 4936 7470 l cp
|
||||
eoclip
|
||||
n 4800 7500 m
|
||||
5400 7500 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
n 4936 7470 m 4816 7500 l 4936 7530 l 4936 7470 l cp gs 0.00 setgray ef gr col0 s
|
||||
% arrowhead
|
||||
n 5264 7530 m 5384 7500 l 5264 7470 l 5264 7530 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
n 2400 900 m 7200 900 l 7200 8100 l 2400 8100 l
|
||||
cp gs col0 s gr
|
||||
/Courier-Bold ff 200.00 scf sf
|
||||
5100 7425 m
|
||||
gs 1 -1 sc (SP) dup sw pop 2 div neg 0 rm col0 sh gr
|
||||
/Courier-Bold ff 200.00 scf sf
|
||||
4350 7425 m
|
||||
gs 1 -1 sc (W) dup sw pop 2 div neg 0 rm col0 sh gr
|
||||
/Courier-Bold ff 200.00 scf sf
|
||||
3225 2250 m
|
||||
gs 1 -1 sc 90.0 rot (dL) dup sw pop 2 div neg 0 rm col0 sh gr
|
||||
/Courier-Bold ff 200.00 scf sf
|
||||
3225 6150 m
|
||||
gs 1 -1 sc 90.0 rot (dL) dup sw pop 2 div neg 0 rm col0 sh gr
|
||||
% here ends figure;
|
||||
$F2psEnd
|
||||
rs
|
||||
showpage
|
||||
%%Trailer
|
||||
%EOF
|
|
@ -0,0 +1,71 @@
|
|||
#FIG 3.2 Produced by xfig version 3.2.5a
|
||||
Landscape
|
||||
Center
|
||||
Inches
|
||||
Letter
|
||||
100.00
|
||||
Single
|
||||
-2
|
||||
1200 2
|
||||
6 5550 1650 5850 1950
|
||||
2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||
5625 1725 5775 1875
|
||||
2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||
5625 1875 5775 1725
|
||||
-6
|
||||
6 5550 6450 5850 6750
|
||||
2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||
5625 6525 5775 6675
|
||||
2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||
5625 6675 5775 6525
|
||||
-6
|
||||
6 2325 825 5850 1350
|
||||
2 2 0 2 0 18 50 -1 -1 6.000 0 0 -1 0 0 5
|
||||
2400 900 5775 900 5775 1275 2400 1275 2400 900
|
||||
4 0 18 50 -1 14 18 0.0000 4 180 540 2550 1200 LCW\001
|
||||
4 0 18 50 -1 14 18 0.0000 4 195 360 3450 1200 dL\001
|
||||
4 0 18 50 -1 14 18 0.0000 4 180 360 5250 1200 SP\001
|
||||
4 0 18 50 -1 14 18 0.0000 4 180 180 4350 1200 W\001
|
||||
-6
|
||||
2 1 3 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
|
||||
5700 1800 5700 6600
|
||||
2 2 0 2 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||
5100 6600 5100 1800 6300 1800 6300 6600 5100 6600
|
||||
2 2 0 2 18 18 60 -1 30 0.000 0 0 -1 0 0 5
|
||||
3900 5700 3900 2700 4800 2700 4800 5700 3900 5700
|
||||
2 1 0 1 0 18 50 -1 -1 4.000 0 0 -1 0 0 2
|
||||
3225 2700 3825 2700
|
||||
2 1 0 1 0 18 50 -1 -1 4.000 0 0 -1 0 0 2
|
||||
5025 1800 3225 1800
|
||||
2 1 0 1 0 18 50 -1 -1 4.000 0 0 -1 0 0 2
|
||||
3825 5700 3225 5700
|
||||
2 1 0 1 0 18 50 -1 -1 4.000 0 0 -1 0 0 2
|
||||
5025 6600 3225 6600
|
||||
2 1 0 1 0 18 50 -1 -1 4.000 0 0 -1 0 0 2
|
||||
3900 5775 3900 7575
|
||||
2 1 0 1 0 18 50 -1 -1 4.000 0 0 -1 0 0 2
|
||||
4800 5775 4800 7575
|
||||
2 1 0 1 0 18 50 -1 -1 4.000 0 0 -1 0 0 4
|
||||
5100 6675 5100 6900 5400 7200 5400 7575
|
||||
2 1 0 1 0 18 50 -1 -1 4.000 0 0 -1 1 1 2
|
||||
1 1 1.00 60.00 120.00
|
||||
1 1 1.00 60.00 120.00
|
||||
3300 1800 3300 2700
|
||||
2 1 0 1 0 18 50 -1 -1 4.000 0 0 -1 1 1 2
|
||||
1 1 1.00 60.00 120.00
|
||||
1 1 1.00 60.00 120.00
|
||||
3300 5700 3300 6600
|
||||
2 1 0 1 0 18 50 -1 -1 4.000 0 0 -1 1 1 2
|
||||
1 1 1.00 60.00 120.00
|
||||
1 1 1.00 60.00 120.00
|
||||
3900 7500 4800 7500
|
||||
2 1 0 1 0 18 50 -1 -1 4.000 0 0 -1 1 1 2
|
||||
1 1 1.00 60.00 120.00
|
||||
1 1 1.00 60.00 120.00
|
||||
4800 7500 5400 7500
|
||||
2 2 0 1 0 18 50 -1 -1 4.000 0 0 -1 0 0 5
|
||||
2400 900 7200 900 7200 8100 2400 8100 2400 900
|
||||
4 1 0 50 -1 14 12 0.0000 4 120 240 5100 7425 SP\001
|
||||
4 1 0 50 -1 14 12 0.0000 4 120 120 4350 7425 W\001
|
||||
4 1 0 50 -1 14 12 1.5708 4 120 240 3225 2250 dL\001
|
||||
4 1 0 50 -1 14 12 1.5708 4 120 240 3225 6150 dL\001
|
Binary file not shown.
After Width: | Height: | Size: 4.3 KiB |
Binary file not shown.
|
@ -0,0 +1,243 @@
|
|||
%!PS-Adobe-2.0 EPSF-2.0
|
||||
%%Title: RDS_VW.fig
|
||||
%%Creator: fig2dev Version 3.2 Patchlevel 5
|
||||
%%CreationDate: Mon Sep 15 18:24:04 2014
|
||||
%%For: jpc@lepka (Jean-Paul Chaput)
|
||||
%%BoundingBox: 0 0 489 255
|
||||
%Magnification: 1.0000
|
||||
%%EndComments
|
||||
/$F2psDict 200 dict def
|
||||
$F2psDict begin
|
||||
$F2psDict /mtrx matrix put
|
||||
/col-1 {0 setgray} bind def
|
||||
/col0 {0.000 0.000 0.000 srgb} bind def
|
||||
/col1 {0.000 0.000 1.000 srgb} bind def
|
||||
/col2 {0.000 1.000 0.000 srgb} bind def
|
||||
/col3 {0.000 1.000 1.000 srgb} bind def
|
||||
/col4 {1.000 0.000 0.000 srgb} bind def
|
||||
/col5 {1.000 0.000 1.000 srgb} bind def
|
||||
/col6 {1.000 1.000 0.000 srgb} bind def
|
||||
/col7 {1.000 1.000 1.000 srgb} bind def
|
||||
/col8 {0.000 0.000 0.560 srgb} bind def
|
||||
/col9 {0.000 0.000 0.690 srgb} bind def
|
||||
/col10 {0.000 0.000 0.820 srgb} bind def
|
||||
/col11 {0.530 0.810 1.000 srgb} bind def
|
||||
/col12 {0.000 0.560 0.000 srgb} bind def
|
||||
/col13 {0.000 0.690 0.000 srgb} bind def
|
||||
/col14 {0.000 0.820 0.000 srgb} bind def
|
||||
/col15 {0.000 0.560 0.560 srgb} bind def
|
||||
/col16 {0.000 0.690 0.690 srgb} bind def
|
||||
/col17 {0.000 0.820 0.820 srgb} bind def
|
||||
/col18 {0.560 0.000 0.000 srgb} bind def
|
||||
/col19 {0.690 0.000 0.000 srgb} bind def
|
||||
/col20 {0.820 0.000 0.000 srgb} bind def
|
||||
/col21 {0.560 0.000 0.560 srgb} bind def
|
||||
/col22 {0.690 0.000 0.690 srgb} bind def
|
||||
/col23 {0.820 0.000 0.820 srgb} bind def
|
||||
/col24 {0.500 0.190 0.000 srgb} bind def
|
||||
/col25 {0.630 0.250 0.000 srgb} bind def
|
||||
/col26 {0.750 0.380 0.000 srgb} bind def
|
||||
/col27 {1.000 0.500 0.500 srgb} bind def
|
||||
/col28 {1.000 0.630 0.630 srgb} bind def
|
||||
/col29 {1.000 0.750 0.750 srgb} bind def
|
||||
/col30 {1.000 0.880 0.880 srgb} bind def
|
||||
/col31 {1.000 0.840 0.000 srgb} bind def
|
||||
|
||||
end
|
||||
save
|
||||
newpath 0 255 moveto 0 0 lineto 489 0 lineto 489 255 lineto closepath clip newpath
|
||||
-106.7 306.7 translate
|
||||
1 -1 scale
|
||||
|
||||
/cp {closepath} bind def
|
||||
/ef {eofill} bind def
|
||||
/gr {grestore} bind def
|
||||
/gs {gsave} bind def
|
||||
/sa {save} bind def
|
||||
/rs {restore} bind def
|
||||
/l {lineto} bind def
|
||||
/m {moveto} bind def
|
||||
/rm {rmoveto} bind def
|
||||
/n {newpath} bind def
|
||||
/s {stroke} bind def
|
||||
/sh {show} bind def
|
||||
/slc {setlinecap} bind def
|
||||
/slj {setlinejoin} bind def
|
||||
/slw {setlinewidth} bind def
|
||||
/srgb {setrgbcolor} bind def
|
||||
/rot {rotate} bind def
|
||||
/sc {scale} bind def
|
||||
/sd {setdash} bind def
|
||||
/ff {findfont} bind def
|
||||
/sf {setfont} bind def
|
||||
/scf {scalefont} bind def
|
||||
/sw {stringwidth} bind def
|
||||
/tr {translate} bind def
|
||||
/tnt {dup dup currentrgbcolor
|
||||
4 -2 roll dup 1 exch sub 3 -1 roll mul add
|
||||
4 -2 roll dup 1 exch sub 3 -1 roll mul add
|
||||
4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
|
||||
bind def
|
||||
/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
|
||||
4 -2 roll mul srgb} bind def
|
||||
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
|
||||
/$F2psEnd {$F2psEnteredState restore end} def
|
||||
|
||||
$F2psBegin
|
||||
10 setmiterlimit
|
||||
0 slj 0 slc
|
||||
0.06000 0.06000 sc
|
||||
%
|
||||
% Fig objects follow
|
||||
%
|
||||
%
|
||||
% here starts figure with depth 60
|
||||
% Polyline
|
||||
0 slj
|
||||
0 slc
|
||||
15.000 slw
|
||||
n 2400 1800 m 8400 1800 l 8400 3600 l 2400 3600 l
|
||||
cp gs col18 0.50 tnt ef gr gs col18 s gr
|
||||
% here ends figure;
|
||||
%
|
||||
% here starts figure with depth 55
|
||||
% Polyline
|
||||
0 slj
|
||||
0 slc
|
||||
15.000 slw
|
||||
n 3000 2100 m 7800 2100 l 7800 3300 l 3000 3300 l
|
||||
cp gs col7 1.00 shd ef gr gs col0 s gr
|
||||
% here ends figure;
|
||||
%
|
||||
% here starts figure with depth 50
|
||||
% Polyline
|
||||
0 slj
|
||||
0 slc
|
||||
15.000 slw
|
||||
n 1800 900 m 5175 900 l 5175 1275 l 1800 1275 l
|
||||
cp gs col0 s gr
|
||||
/Courier-Bold ff 300.00 scf sf
|
||||
1950 1200 m
|
||||
gs 1 -1 sc (VW) col18 sh gr
|
||||
/Courier-Bold ff 300.00 scf sf
|
||||
2850 1200 m
|
||||
gs 1 -1 sc (dL) col18 sh gr
|
||||
/Courier-Bold ff 300.00 scf sf
|
||||
3750 1200 m
|
||||
gs 1 -1 sc (dW) col18 sh gr
|
||||
/Courier-Bold ff 300.00 scf sf
|
||||
4650 1200 m
|
||||
gs 1 -1 sc (dX) col0 sh gr
|
||||
% Polyline
|
||||
7.500 slw
|
||||
n 7875 2100 m
|
||||
9375 2100 l gs col0 s gr
|
||||
% Polyline
|
||||
n 8475 1800 m 8700 1800 l 9000 1500 l
|
||||
9375 1500 l gs col0 s gr
|
||||
% Polyline
|
||||
n 7875 3300 m
|
||||
9375 3300 l gs col0 s gr
|
||||
% Polyline
|
||||
n 8475 3600 m 8700 3600 l 9000 3900 l
|
||||
9375 3900 l gs col0 s gr
|
||||
% Polyline
|
||||
n 7800 3375 m
|
||||
7800 4575 l gs col0 s gr
|
||||
% Polyline
|
||||
n 8400 3675 m
|
||||
8400 4575 l gs col0 s gr
|
||||
% Polyline
|
||||
n 2400 3675 m
|
||||
2400 4575 l gs col0 s gr
|
||||
% Polyline
|
||||
n 3000 3375 m
|
||||
3000 4575 l gs col0 s gr
|
||||
% Polyline
|
||||
gs clippath
|
||||
9270 1964 m 9270 2115 l 9330 2115 l 9330 1964 l 9330 1964 l 9300 2084 l 9270 1964 l cp
|
||||
9330 1636 m 9330 1485 l 9270 1485 l 9270 1636 l 9270 1636 l 9300 1516 l 9330 1636 l cp
|
||||
eoclip
|
||||
n 9300 1500 m
|
||||
9300 2100 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
n 9330 1636 m 9300 1516 l 9270 1636 l 9330 1636 l cp gs 0.00 setgray ef gr col0 s
|
||||
% arrowhead
|
||||
n 9270 1964 m 9300 2084 l 9330 1964 l 9270 1964 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
gs clippath
|
||||
9270 3764 m 9270 3915 l 9330 3915 l 9330 3764 l 9330 3764 l 9300 3884 l 9270 3764 l cp
|
||||
9330 3436 m 9330 3285 l 9270 3285 l 9270 3436 l 9270 3436 l 9300 3316 l 9330 3436 l cp
|
||||
eoclip
|
||||
n 9300 3300 m
|
||||
9300 3900 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
n 9330 3436 m 9300 3316 l 9270 3436 l 9330 3436 l cp gs 0.00 setgray ef gr col0 s
|
||||
% arrowhead
|
||||
n 9270 3764 m 9300 3884 l 9330 3764 l 9270 3764 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
gs clippath
|
||||
8264 4530 m 8415 4530 l 8415 4470 l 8264 4470 l 8264 4470 l 8384 4500 l 8264 4530 l cp
|
||||
7936 4470 m 7785 4470 l 7785 4530 l 7936 4530 l 7936 4530 l 7816 4500 l 7936 4470 l cp
|
||||
eoclip
|
||||
n 7800 4500 m
|
||||
8400 4500 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
n 7936 4470 m 7816 4500 l 7936 4530 l 7936 4470 l cp gs 0.00 setgray ef gr col0 s
|
||||
% arrowhead
|
||||
n 8264 4530 m 8384 4500 l 8264 4470 l 8264 4530 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
gs clippath
|
||||
2864 4530 m 3015 4530 l 3015 4470 l 2864 4470 l 2864 4470 l 2984 4500 l 2864 4530 l cp
|
||||
2536 4470 m 2385 4470 l 2385 4530 l 2536 4530 l 2536 4530 l 2416 4500 l 2536 4470 l cp
|
||||
eoclip
|
||||
n 2400 4500 m
|
||||
3000 4500 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
n 2536 4470 m 2416 4500 l 2536 4530 l 2536 4470 l cp gs 0.00 setgray ef gr col0 s
|
||||
% arrowhead
|
||||
n 2864 4530 m 2984 4500 l 2864 4470 l 2864 4530 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
45.000 slw
|
||||
n 2925 2625 m
|
||||
3075 2775 l gs col0 s gr
|
||||
% Polyline
|
||||
n 2925 2775 m
|
||||
3075 2625 l gs col0 s gr
|
||||
% Polyline
|
||||
n 7725 2625 m
|
||||
7875 2775 l gs col0 s gr
|
||||
% Polyline
|
||||
n 7725 2775 m
|
||||
7875 2625 l gs col0 s gr
|
||||
% Polyline
|
||||
15.000 slw
|
||||
[90 45 15 45] 0 sd
|
||||
n 3000 2700 m
|
||||
7800 2700 l gs col0 s gr [] 0 sd
|
||||
% Polyline
|
||||
7.500 slw
|
||||
n 1800 900 m 9900 900 l 9900 5100 l 1800 5100 l
|
||||
cp gs col0 s gr
|
||||
/Courier-Bold ff 200.00 scf sf
|
||||
2700 4425 m
|
||||
gs 1 -1 sc (dL) dup sw pop 2 div neg 0 rm col0 sh gr
|
||||
/Courier-Bold ff 200.00 scf sf
|
||||
8100 4425 m
|
||||
gs 1 -1 sc (dL) dup sw pop 2 div neg 0 rm col0 sh gr
|
||||
/Courier-Bold ff 200.00 scf sf
|
||||
9225 3600 m
|
||||
gs 1 -1 sc 90.0 rot (dW/2) dup sw pop 2 div neg 0 rm col0 sh gr
|
||||
/Courier-Bold ff 200.00 scf sf
|
||||
9225 1800 m
|
||||
gs 1 -1 sc 90.0 rot (dW/2) dup sw pop 2 div neg 0 rm col0 sh gr
|
||||
% here ends figure;
|
||||
$F2psEnd
|
||||
rs
|
||||
showpage
|
||||
%%Trailer
|
||||
%EOF
|
|
@ -0,0 +1,69 @@
|
|||
#FIG 3.2 Produced by xfig version 3.2.5a
|
||||
Landscape
|
||||
Center
|
||||
Inches
|
||||
Letter
|
||||
100.00
|
||||
Single
|
||||
-2
|
||||
1200 2
|
||||
6 1725 825 5250 1350
|
||||
2 2 0 2 0 18 50 -1 -1 6.000 0 0 -1 0 0 5
|
||||
1800 900 5175 900 5175 1275 1800 1275 1800 900
|
||||
4 0 18 50 -1 14 18 0.0000 4 180 360 1950 1200 VW\001
|
||||
4 0 18 50 -1 14 18 0.0000 4 195 360 2850 1200 dL\001
|
||||
4 0 18 50 -1 14 18 0.0000 4 195 360 3750 1200 dW\001
|
||||
4 0 0 50 -1 14 18 0.0000 4 195 360 4650 1200 dX\001
|
||||
-6
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
|
||||
7875 2100 9375 2100
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 4
|
||||
8475 1800 8700 1800 9000 1500 9375 1500
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
|
||||
7875 3300 9375 3300
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 4
|
||||
8475 3600 8700 3600 9000 3900 9375 3900
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
|
||||
7800 3375 7800 4575
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
|
||||
8400 3675 8400 4575
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
|
||||
2400 3675 2400 4575
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
|
||||
3000 3375 3000 4575
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 1 2
|
||||
1 1 1.00 60.00 120.00
|
||||
1 1 1.00 60.00 120.00
|
||||
9300 1500 9300 2100
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 1 2
|
||||
1 1 1.00 60.00 120.00
|
||||
1 1 1.00 60.00 120.00
|
||||
9300 3300 9300 3900
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 1 2
|
||||
1 1 1.00 60.00 120.00
|
||||
1 1 1.00 60.00 120.00
|
||||
7800 4500 8400 4500
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 1 2
|
||||
1 1 1.00 60.00 120.00
|
||||
1 1 1.00 60.00 120.00
|
||||
2400 4500 3000 4500
|
||||
2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||
2925 2625 3075 2775
|
||||
2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||
2925 2775 3075 2625
|
||||
2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||
7725 2625 7875 2775
|
||||
2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||
7725 2775 7875 2625
|
||||
2 1 3 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
|
||||
3000 2700 7800 2700
|
||||
2 2 0 2 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||
3000 2100 7800 2100 7800 3300 3000 3300 3000 2100
|
||||
2 2 0 2 18 18 60 -1 30 0.000 0 0 -1 0 0 5
|
||||
2400 1800 8400 1800 8400 3600 2400 3600 2400 1800
|
||||
2 2 0 1 0 18 50 -1 -1 4.000 0 0 -1 0 0 5
|
||||
1800 900 9900 900 9900 5100 1800 5100 1800 900
|
||||
4 1 0 50 -1 14 12 0.0000 4 120 240 2700 4425 dL\001
|
||||
4 1 0 50 -1 14 12 0.0000 4 120 240 8100 4425 dL\001
|
||||
4 1 0 50 -1 14 12 1.5708 4 150 480 9225 3600 dW/2\001
|
||||
4 1 0 50 -1 14 12 1.5708 4 150 480 9225 1800 dW/2\001
|
Binary file not shown.
After Width: | Height: | Size: 4.2 KiB |
|
@ -0,0 +1,69 @@
|
|||
#FIG 3.2 Produced by xfig version 3.2.5a
|
||||
Landscape
|
||||
Center
|
||||
Inches
|
||||
Letter
|
||||
100.00
|
||||
Single
|
||||
-2
|
||||
1200 2
|
||||
6 1725 825 5250 1350
|
||||
2 2 0 2 0 18 50 -1 -1 6.000 0 0 -1 0 0 5
|
||||
1800 900 5175 900 5175 1275 1800 1275 1800 900
|
||||
4 0 18 50 -1 14 18 0.0000 4 180 360 1950 1200 VW\001
|
||||
4 0 18 50 -1 14 18 0.0000 4 195 360 2850 1200 dL\001
|
||||
4 0 18 50 -1 14 18 0.0000 4 195 360 3750 1200 dW\001
|
||||
4 0 0 50 -1 14 18 0.0000 4 195 360 4650 1200 dX\001
|
||||
-6
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
|
||||
7875 2100 9375 2100
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 4
|
||||
8475 1800 8700 1800 9000 1500 9375 1500
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
|
||||
7875 3300 9375 3300
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 4
|
||||
8475 3600 8700 3600 9000 3900 9375 3900
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
|
||||
7800 3375 7800 4575
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
|
||||
8400 3675 8400 4575
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
|
||||
2400 3675 2400 4575
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
|
||||
3000 3375 3000 4575
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 1 2
|
||||
1 1 1.00 60.00 120.00
|
||||
1 1 1.00 60.00 120.00
|
||||
9300 1500 9300 2100
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 1 2
|
||||
1 1 1.00 60.00 120.00
|
||||
1 1 1.00 60.00 120.00
|
||||
9300 3300 9300 3900
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 1 2
|
||||
1 1 1.00 60.00 120.00
|
||||
1 1 1.00 60.00 120.00
|
||||
7800 4500 8400 4500
|
||||
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 1 2
|
||||
1 1 1.00 60.00 120.00
|
||||
1 1 1.00 60.00 120.00
|
||||
2400 4500 3000 4500
|
||||
2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||
2925 2625 3075 2775
|
||||
2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||
2925 2775 3075 2625
|
||||
2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||
7725 2625 7875 2775
|
||||
2 1 0 4 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||
7725 2775 7875 2625
|
||||
2 1 3 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
|
||||
3000 2700 7800 2700
|
||||
2 2 0 2 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||
3000 2100 7800 2100 7800 3300 3000 3300 3000 2100
|
||||
2 2 0 2 18 18 60 -1 30 0.000 0 0 -1 0 0 5
|
||||
2400 1800 8400 1800 8400 3600 2400 3600 2400 1800
|
||||
2 2 0 1 0 18 50 -1 -1 4.000 0 0 -1 0 0 5
|
||||
1800 900 9900 900 9900 5100 1800 5100 1800 900
|
||||
4 1 0 50 -1 14 12 0.0000 4 120 240 2700 4425 dL\001
|
||||
4 1 0 50 -1 14 12 0.0000 4 120 240 8100 4425 dL\001
|
||||
4 1 0 50 -1 14 12 1.5708 4 150 480 9225 3600 dW/2\001
|
||||
4 1 0 50 -1 14 12 1.5708 4 150 480 9225 1800 dW/2\001
|
Binary file not shown.
|
@ -0,0 +1,456 @@
|
|||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%%Creator: (ImageMagick)
|
||||
%%Title: (../images/clipboard.eps)
|
||||
%%CreationDate: (2012-02-27T23:17:15+01:00)
|
||||
%%BoundingBox: 0 0 48 48
|
||||
%%HiResBoundingBox: 0 0 48 48
|
||||
%%DocumentData: Clean7Bit
|
||||
%%LanguageLevel: 1
|
||||
%%Pages: 1
|
||||
%%EndComments
|
||||
|
||||
%%BeginDefaults
|
||||
%%EndDefaults
|
||||
|
||||
%%BeginProlog
|
||||
%
|
||||
% Display a color image. The image is displayed in color on
|
||||
% Postscript viewers or printers that support color, otherwise
|
||||
% it is displayed as grayscale.
|
||||
%
|
||||
/DirectClassPacket
|
||||
{
|
||||
%
|
||||
% Get a DirectClass packet.
|
||||
%
|
||||
% Parameters:
|
||||
% red.
|
||||
% green.
|
||||
% blue.
|
||||
% length: number of pixels minus one of this color (optional).
|
||||
%
|
||||
currentfile color_packet readhexstring pop pop
|
||||
compression 0 eq
|
||||
{
|
||||
/number_pixels 3 def
|
||||
}
|
||||
{
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/number_pixels exch 1 add 3 mul def
|
||||
} ifelse
|
||||
0 3 number_pixels 1 sub
|
||||
{
|
||||
pixels exch color_packet putinterval
|
||||
} for
|
||||
pixels 0 number_pixels getinterval
|
||||
} bind def
|
||||
|
||||
/DirectClassImage
|
||||
{
|
||||
%
|
||||
% Display a DirectClass image.
|
||||
%
|
||||
systemdict /colorimage known
|
||||
{
|
||||
columns rows 8
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ DirectClassPacket } false 3 colorimage
|
||||
}
|
||||
{
|
||||
%
|
||||
% No colorimage operator; convert to grayscale.
|
||||
%
|
||||
columns rows 8
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ GrayDirectClassPacket } image
|
||||
} ifelse
|
||||
} bind def
|
||||
|
||||
/GrayDirectClassPacket
|
||||
{
|
||||
%
|
||||
% Get a DirectClass packet; convert to grayscale.
|
||||
%
|
||||
% Parameters:
|
||||
% red
|
||||
% green
|
||||
% blue
|
||||
% length: number of pixels minus one of this color (optional).
|
||||
%
|
||||
currentfile color_packet readhexstring pop pop
|
||||
color_packet 0 get 0.299 mul
|
||||
color_packet 1 get 0.587 mul add
|
||||
color_packet 2 get 0.114 mul add
|
||||
cvi
|
||||
/gray_packet exch def
|
||||
compression 0 eq
|
||||
{
|
||||
/number_pixels 1 def
|
||||
}
|
||||
{
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/number_pixels exch 1 add def
|
||||
} ifelse
|
||||
0 1 number_pixels 1 sub
|
||||
{
|
||||
pixels exch gray_packet put
|
||||
} for
|
||||
pixels 0 number_pixels getinterval
|
||||
} bind def
|
||||
|
||||
/GrayPseudoClassPacket
|
||||
{
|
||||
%
|
||||
% Get a PseudoClass packet; convert to grayscale.
|
||||
%
|
||||
% Parameters:
|
||||
% index: index into the colormap.
|
||||
% length: number of pixels minus one of this color (optional).
|
||||
%
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/offset exch 3 mul def
|
||||
/color_packet colormap offset 3 getinterval def
|
||||
color_packet 0 get 0.299 mul
|
||||
color_packet 1 get 0.587 mul add
|
||||
color_packet 2 get 0.114 mul add
|
||||
cvi
|
||||
/gray_packet exch def
|
||||
compression 0 eq
|
||||
{
|
||||
/number_pixels 1 def
|
||||
}
|
||||
{
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/number_pixels exch 1 add def
|
||||
} ifelse
|
||||
0 1 number_pixels 1 sub
|
||||
{
|
||||
pixels exch gray_packet put
|
||||
} for
|
||||
pixels 0 number_pixels getinterval
|
||||
} bind def
|
||||
|
||||
/PseudoClassPacket
|
||||
{
|
||||
%
|
||||
% Get a PseudoClass packet.
|
||||
%
|
||||
% Parameters:
|
||||
% index: index into the colormap.
|
||||
% length: number of pixels minus one of this color (optional).
|
||||
%
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/offset exch 3 mul def
|
||||
/color_packet colormap offset 3 getinterval def
|
||||
compression 0 eq
|
||||
{
|
||||
/number_pixels 3 def
|
||||
}
|
||||
{
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/number_pixels exch 1 add 3 mul def
|
||||
} ifelse
|
||||
0 3 number_pixels 1 sub
|
||||
{
|
||||
pixels exch color_packet putinterval
|
||||
} for
|
||||
pixels 0 number_pixels getinterval
|
||||
} bind def
|
||||
|
||||
/PseudoClassImage
|
||||
{
|
||||
%
|
||||
% Display a PseudoClass image.
|
||||
%
|
||||
% Parameters:
|
||||
% class: 0-PseudoClass or 1-Grayscale.
|
||||
%
|
||||
currentfile buffer readline pop
|
||||
token pop /class exch def pop
|
||||
class 0 gt
|
||||
{
|
||||
currentfile buffer readline pop
|
||||
token pop /depth exch def pop
|
||||
/grays columns 8 add depth sub depth mul 8 idiv string def
|
||||
columns rows depth
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ currentfile grays readhexstring pop } image
|
||||
}
|
||||
{
|
||||
%
|
||||
% Parameters:
|
||||
% colors: number of colors in the colormap.
|
||||
% colormap: red, green, blue color packets.
|
||||
%
|
||||
currentfile buffer readline pop
|
||||
token pop /colors exch def pop
|
||||
/colors colors 3 mul def
|
||||
/colormap colors string def
|
||||
currentfile colormap readhexstring pop pop
|
||||
systemdict /colorimage known
|
||||
{
|
||||
columns rows 8
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ PseudoClassPacket } false 3 colorimage
|
||||
}
|
||||
{
|
||||
%
|
||||
% No colorimage operator; convert to grayscale.
|
||||
%
|
||||
columns rows 8
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ GrayPseudoClassPacket } image
|
||||
} ifelse
|
||||
} ifelse
|
||||
} bind def
|
||||
|
||||
/DisplayImage
|
||||
{
|
||||
%
|
||||
% Display a DirectClass or PseudoClass image.
|
||||
%
|
||||
% Parameters:
|
||||
% x & y translation.
|
||||
% x & y scale.
|
||||
% label pointsize.
|
||||
% image label.
|
||||
% image columns & rows.
|
||||
% class: 0-DirectClass or 1-PseudoClass.
|
||||
% compression: 0-none or 1-RunlengthEncoded.
|
||||
% hex color packets.
|
||||
%
|
||||
gsave
|
||||
/buffer 512 string def
|
||||
/byte 1 string def
|
||||
/color_packet 3 string def
|
||||
/pixels 768 string def
|
||||
|
||||
currentfile buffer readline pop
|
||||
token pop /x exch def
|
||||
token pop /y exch def pop
|
||||
x y translate
|
||||
currentfile buffer readline pop
|
||||
token pop /x exch def
|
||||
token pop /y exch def pop
|
||||
currentfile buffer readline pop
|
||||
token pop /pointsize exch def pop
|
||||
/Times-Roman findfont pointsize scalefont setfont
|
||||
x y scale
|
||||
currentfile buffer readline pop
|
||||
token pop /columns exch def
|
||||
token pop /rows exch def pop
|
||||
currentfile buffer readline pop
|
||||
token pop /class exch def pop
|
||||
currentfile buffer readline pop
|
||||
token pop /compression exch def pop
|
||||
class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
|
||||
} bind def
|
||||
%%EndProlog
|
||||
%%Page: 1 1
|
||||
%%PageBoundingBox: 0 0 48 48
|
||||
userdict begin
|
||||
DisplayImage
|
||||
0 0
|
||||
48 48
|
||||
12.000000
|
||||
48 48
|
||||
0
|
||||
0
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF383448383448384848383448FFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFF384848FFFFFFFFFFFFD0D0E0384848182428FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09C78FFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC09C68784828684828784828684828
|
||||
784828684828784828684828784828684828784828684828784828383448FFFFFF585858000000
|
||||
A0ACC0A09CC0384848281428784828784838685828784838785828784838785828784838785828
|
||||
784838785828784838785828784838C09C68784828FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFF684838685828684828685828684838685828784838685828684838
|
||||
685828784838685828784838384848FFFFFFFFFFFF000000485868FFFFFFB0BCC0B0BCD0182428
|
||||
182428685828784838685828785838685828784838685838785838685828784838785838785838
|
||||
685828785838000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
684828784828684828784828684828784828384848383448383448383448384848383448383448
|
||||
FFFFFFFFFFFFFFFFFFA0ACB0A09CC0A0ACB0D0BCD0B0BCC0B0ACB0182428281428383448383448
|
||||
384848383448383448585858785828784838785828784838785828784838785828000000686868
|
||||
908C90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF784838685828684838685828
|
||||
784838284848484868FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0F0D0E0E0D0D0E0
|
||||
C0D0D0C0D0E0C0D0D0C0BCD0B0BCD0B0BCD0B0BCC0B0ACC0A0ACC0A09CC0A0ACC0485868182428
|
||||
585858785838785838785838784838785838785838000000585858787878908C90FFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF684828784828684828FFFFFFFFFFFF383448FFFFFFD0D0E0
|
||||
D0D0D0D0BCD0C0D0D0C0BCD0C0BCC0C0ACC0B0BCC0B0ACC0A0ACB0B09CC0A0ACB0A09CB0909CB0
|
||||
A09CB0909CA0908CB0909CA0908CA0909CA0908CB0909CA0484858182428908C90B0BCB0F0F0F0
|
||||
382418784838785828000000484848686868908C90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFF684838685828784838F0FFFFFFFFFF384848D0D0E0485858585868486868585868485858
|
||||
585868486868585868485858585868486868585868485858585868486868585868485858585868
|
||||
486868585868485858585868283438181428788C90B0ACC0F0FFF0482428785838785838000000
|
||||
383438484848A02428A02428FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF684828784828685828
|
||||
FFF0FFFFFFF0281428181418181418181418181418181418181418181418181418181418181418
|
||||
181418181418181418181418181418181418181418181418181418181418181418181418181418
|
||||
181418181418907890B0BCB0F0F0F0383418904838785828000000383438A02428F09C78FF8C78
|
||||
000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF784838685828784838F0FFFFFFFFFFF0FFFF908CA0
|
||||
908C90685868383438282428787878908C90788C90908C90908C90908C90788C90908C90908C90
|
||||
908C90788C90908C90788C90908C90788C90908C90788C90908C90788C90908C90788C90C0ACC0
|
||||
F0F0F0482428785838905838000000484868F09C78A02428A02428000000FFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFF685828784828684828FFF0FFF0FFF0FFF0FFC0BCC0786878382428684800484800
|
||||
483448B0BCB0C0ACC0C0BCB0C0ACC0B0BCB0C0ACC0B0BCB0C0ACC0B0BCB0C0ACC0B0BCB0C0ACC0
|
||||
B0BCB0C0ACC0B0BCB0C0ACC0B0BCB0C0ACC0B0BCB0C0ACC0B0BCB0F0F0F0382418905838785828
|
||||
484868FFFFFF000000A02428000000481418FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF784838685828
|
||||
784838F0FFFFFFFFFFF0FFFFE0E0E0181418901418F07828E05890382438787878F0FFF0F0F0FF
|
||||
F0FFF0F0F0FFF0FFF0F0F0FFF0FFF0F0F0FFF0FFF0F0F0FFF0FFF0F0F0FFF0FFF0F0F0FFF0FFF0
|
||||
F0F0FFF0FFF0F0F0FFE0FFF0F0F0FFF0FFF0482428785838485868FFFFFFA0ACC0485858000000
|
||||
481418FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF785828784838685828FFF0FFF0FFF0FFF0FF
|
||||
C0BCC0000000587818188C28480048380038788C78FFF0FFF0FFF0FFF0FFF0FFF0FFF0FFF0FFF0
|
||||
FFF0F0F0F0F0F0F0FFF0FFF0FFF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
|
||||
F0F0F0F0F0F0383418484868FFFFFFA09CC0485858000000182428FFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFF784838685828784838F0FFFFFFFFFFF0FFF0B0ACB028242800141818D028
|
||||
004818000000E0E0E0F0FFF0F0F0FFF0FFF0F0F0FFF0FFF0F0F0FFF0FFF0F0F0FFF0FFF0F0F0FF
|
||||
F0FFF0F0F0FFF0F0F0F0F0FFF0FFF0F0F0FFE0F0F0F0F0FFF0F0F0F0F0F0E0F0F0484868FFFFFF
|
||||
A0ACC0485858000000182428787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF685828
|
||||
784838785828FFF0FFF0FFF0FFF0FFE0E0D0A08CA0000000181400000000787878F0FFF0FFF0FF
|
||||
F0F0F0F0F0FFF0F0F0F0F0F0F0F0F0F0F0FFF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
|
||||
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0E0F0F0483428FFFFFF484868485858000000182428484848
|
||||
787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF784838685828785838F0FFF0F0F0FF
|
||||
F0FFF0F0F0FFD0E0D0484848586858C0BCC0F0FFF0F0F0FFF0FFF0F0F0FFF0FFF0F0F0FFF0FFF0
|
||||
F0F0FFF0FFF0F0F0FFF0FFF0F0F0F0E0F0F0F0F0FFE0FFF0F0F0F0E0F0F0F0F0FFE0FFF0F0F0F0
|
||||
E0F0F0483428FFFFFFF0E078F0AC90000000001400282428484848787878FFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFF785828784838785828FFF0FFF0FFF0FFF0FFF0FFF0FFF0F0D0E0D0
|
||||
E0D0E0F0FFF0FFF0F0F0F0F0F0F0FFF0FFF0FFF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
|
||||
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0E0F0F0483428FFFFFFF0E078F0AC90
|
||||
000000483428000000383438484848787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
785838685828784838F0FFF0F0F0FFF0FFF0F0F0FFF0FFF0F0F0FFF0FFF0F0F0FFF0FFF0F0F0FF
|
||||
F0FFF0F0F0FFF0FFF0F0F0FFF0F0F0F0F0FFF0FFF0F0F0FFE0F0F0F0F0FFE0F0F0F0F0F0E0F0F0
|
||||
F0F0FFE0F0F0F0F0F0E0F0F0483428FFFFFFF0E078F0AC90000000483428905838000000282428
|
||||
484848787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF785828784838785828F0F0FF
|
||||
F0FFF0FFF0FFF0F0F0F0F0FFF0F0F0484868485858484868485858484868485858484868485858
|
||||
484868485858484868485858484868485858484868485858484868485858484868485858483428
|
||||
FFFFFFF0E078F0AC90000000483428905838785838000000383438484848787878FFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF785838785838785838F0FFF0F0F0FFF0FFF0F0F0FFF0FFF0
|
||||
F0F0FFF0FFF0F0F0FFE0FFF0F0F0FFF0FFF0F0F0F0E0F0F0F0F0FFE0FFF0F0F0F0E0F0F0F0F0F0
|
||||
E0FFF0F0F0F0E0F0F0F0F0F0E0F0F0F0F0F0E0F0F0483428FFFFFFF0E078F0AC90000000483428
|
||||
482428786838905848000000282428484848787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFF785828784838785828FFF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0281428F0F0F0F0F0F0
|
||||
F0F0F0F0F0F0485858484868485858A09CC0A0ACB0A09CC0A0ACB0484868485858484868A0ACB0
|
||||
A09CC0A0ACB0483428FFFFFFF0E078F0AC90000000483428F0F0F0483418905838905838000000
|
||||
383438484848787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF785838785838784838
|
||||
F0FFF0F0F0FFF0FFF0F0F0FFF0FFF0F0F0FFF0F0F0F0F0FFF0FFF0F0F0FFE0F0F0F0F0FFE0F0F0
|
||||
F0F0F0E0F0F0F0F0FFE0F0F0F0F0F0E0F0F0F0F0F0E0F0F0F0F0F0E0F0F0483428FFFFFFF0E078
|
||||
F0AC90000000483428F0F0F0E0F0F0482428906838905848000000282428484848787878FFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF785828904838785838F0F0FFF0F0F0F0F0F0F0F0F0
|
||||
F0F0F0F0F0F0484868485858484868485858484868485858484868485858484868485858484868
|
||||
485858484868485858484868A0ACB0483428FFFFFFF0E078F0AC90000000483428F0E0F0E0F0E0
|
||||
F0E0F0483418905838905838000000383438484848787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFF785838785838785838E0FFF0F0F0FFF0FFF0F0F0F0E0F0F0F0F0FFE0FFF0F0F0F0
|
||||
E0F0F0F0F0F0E0FFF0F0F0F0E0F0F0F0F0F0E0F0F0F0F0F0E0F0F0F0F0F0E0F0F0F0F0F0E0F0F0
|
||||
483428FFFFFFF0E078F0AC90000000483428E0F0F0E0F0F0E0F0F0E0F0F0483428786838905848
|
||||
000000282428484848787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF785828905838
|
||||
785828F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0281428F0F0F0F0F0F0F0F0F0F0F0F0A0ACB0
|
||||
484868485858A09CC0A0ACB0A09CC0A0ACB0484868A0ACB0483428FFFFFFF0E078F0AC90000000
|
||||
483428F0E0F0E0F0E0F0E0F0E0F0E0E0E0F0483418905838905838000000383438484848787878
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF785838785838785838F0FFF0F0F0F0E0F0F0
|
||||
F0F0FFE0F0F0F0F0F0E0F0F0F0F0FFE0F0F0F0F0F0E0F0F0F0F0F0E0F0F0F0F0F0E0F0F0F0F0F0
|
||||
E0F0F0F0F0F0E0F0F0483428FFFFFFF0E078F0AC90000000483428E0F0F0E0F0F0E0E0F0E0F0F0
|
||||
E0F0F0E0F0F0482428906838905848000000282428484848787878FFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFF785828904838785838F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0E0F0F0484868
|
||||
485858484868485858484868485858484868485858484868485858484868A0ACB0483428FFFFFF
|
||||
F0E078F0AC90000000483428484868485858484868E0F0E0E0E0F0E0F0E0E0E0F0483418905848
|
||||
785838000000383438484848787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF785838
|
||||
785838905838E0F0F0F0F0F0E0FFF0F0F0F0E0F0F0F0F0F0E0F0F0F0F0F0E0F0F0F0F0F0E0F0F0
|
||||
F0F0F0E0F0F0E0F0F0E0F0F0E0F0F0E0F0F0483428FFFFFFF0E078F0AC90000000483428E0F0F0
|
||||
E0F0E0E0E0F0E0F0F0E0F0F0E0F0E0E0E0F0D0E0E0482428685828583438000000282428484848
|
||||
787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF785838905838785828F0F0F0F0F0F0
|
||||
F0F0F0E0F0F0F0F0F0E0F0F0281428E0F0F0F0E0F0E0F0F0F0F0F0485858484868A0ACB0484868
|
||||
A0ACB0483428FFFFFFF0E078F0AC90000000483428E0E0F0E0F0E0F0E0F0E0F0E0E0E0F0D0E0E0
|
||||
D0BCD0B0ACB0A08CA0282418482428382418000000383438484848787878FFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFF905838785838905838E0F0F0F0F0F0E0F0F0F0F0F0E0F0F0F0F0F0
|
||||
E0F0F0F0F0F0E0F0F0F0F0F0E0F0F0E0F0F0E0F0F0E0F0F0E0F0F0483428FFFFFFF0E078F0AC90
|
||||
000000483428E0F0F0E0F0F0E0E0F0D0F0E0D0D0D0B0BCC0A09CB0788C90686878485858181418
|
||||
282418382418000000282428484848787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
785838905838785838F0F0F0E0F0F0F0E0F0E0F0F0F0F0F0E0F0F0484868485858484868485858
|
||||
484868485858484868A0ACB0483428FFFFFFF0E078F0AC90000000483428484868485858484858
|
||||
384858383448283438282438585858484858384838483448181400482428483428000000383438
|
||||
484848787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF905838786838905838E0F0F0
|
||||
E0F0F0E0F0F0F0F0F0E0F0F0E0F0F0E0F0F0E0F0F0E0F0F0E0F0F0E0F0F0E0F0F0E0F0F0683438
|
||||
FFFFFFF0E078F0AC90000000483428C0BCD0C0D0C0A0ACB0909C90787890586868484858384848
|
||||
484848485848686868687878382418684838785848000000282428484848787878FFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF905838905838785838F0E0F0E0F0F0F0F0F0E0F0E0F0E0F0
|
||||
E0F0E0281428E0F0E0F0E0F0E0F0E0F0E0F0A0ACB0903438907868903438F0AC90000000483428
|
||||
383448383438382438484848383448182418383438485848585858687868908C90A0ACA0C0BCC0
|
||||
483418A05848906838000000383438484848787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFF905838785838905848E0F0F0F0F0F0E0F0F0E0F0F0E0F0F0E0F0F0E0F0F0E0E0F0E0F0F0
|
||||
E0F0F0E0F0F0B08C90784838FFFFFFE0F0E0000000382418686868586868585858384848484848
|
||||
384848585858687878908C90909CA0B0ACC0C0D0D0D0E0E0D0F0E0483428906848A06848000000
|
||||
282428484848787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF785838905838905838
|
||||
F0E0F0E0F0E0F0E0F0E0F0F0E0E0F0E0F0E0484868485858484868485858484868784828D0ACB0
|
||||
784828000000282438282428182418181428181418281428282428382438383438383458384858
|
||||
484868D0E0E0E0E0F0D0E0E0E0E0E0483428A05848906838000000383438484848787878FFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF905848786838905838E0F0F0E0F0F0E0F0F0E0F0F0
|
||||
E0F0F0E0E0F0E0F0F0E0F0F0E0F0E0E0E0F0787868000000282418282428687878585868485858
|
||||
585858586868787878909C90B0ACC0C0D0D0D0D0E0D0E0E0E0E0F0D0F0E0E0E0F0D0F0E0E0E0F0
|
||||
D0F0E0483428906848A06848000000282428484848787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFF905838905838905838F0E0F0E0F0E0E0E0F0E0F0E0F0E0F0E0F0E0281428E0F0E0
|
||||
F0E0F0E0F0E0000000383418A09CA0908C90908C90788C78908C90909C90B09CB0C0BCC0D0D0E0
|
||||
E0E0E0E0E0F0D0E0E0E0E0E0E0E0E0E0E0E0D0E0E0E0E0E0D0E0E0E0E0E0483418A05848A06838
|
||||
000000383438484848787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF905848786838
|
||||
905848E0F0F0E0F0F0E0F0F0E0E0F0E0F0F0E0E0F0E0F0E0E0E0F0E0F0F0E0E0F0C0D0D0C0BCD0
|
||||
C0D0C0C0D0D0C0D0D0C0D0D0C0E0D0D0D0E0D0E0E0E0E0F0D0F0E0E0E0F0D0F0E0E0E0F0D0F0E0
|
||||
E0E0F0D0E0E0E0E0F0D0F0E0E0E0F0D0E0E0483428906848A06848000000282428484848787878
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF905838905838905838E0E0F0E0F0E0E0E0F0
|
||||
E0F0E0E0E0F0E0F0E0484868485858484868485858484868485858484868485858484868485858
|
||||
484868485858484868485858484868485858484868485858484868485858484868D0E0E0E0E0E0
|
||||
D0E0E0E0E0E0483428A05848906838000000383438484848787878FFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFF905848906838905848E0F0E0E0E0F0E0F0F0E0E0F0D0F0E0E0E0F0E0F0E0
|
||||
E0E0F0D0F0E0E0E0F0D0F0E0E0E0F0D0F0E0E0E0F0D0F0E0E0E0F0D0F0E0E0E0F0D0F0E0E0E0F0
|
||||
D0F0E0E0E0F0D0F0E0E0E0F0D0E0E0D0E0F0D0F0E0D0E0E0D0E0E0D0E0F0D0F0E0483428906848
|
||||
A06848000000282428484848787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF905838
|
||||
905848906838E0E0F0E0F0E0E0E0F0E0F0E0E0E0F0E0F0E0E0E0F0E0F0E0E0E0F0E0E0E0E0E0F0
|
||||
E0F0E0E0E0E0E0E0E0E0E0F0D0E0E0E0E0E0E0E0E0E0E0E0D0E0E0E0E0E0D0E0E0E0E0E0D0E0E0
|
||||
E0E0E0D0E0E0E0E0E0D0E0E0E0E0E0D0E0E0E0E0E0483418A05848A06838000000383438484848
|
||||
787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF905848906838905848E0F0F0E0E0F0
|
||||
D0F0E0E0E0F0E0F0E0E0E0F0D0F0E0E0E0F0D0F0E0E0E0F0D0F0E0E0E0F0D0F0E0E0E0F0D0F0E0
|
||||
E0E0F0D0F0E0E0E0F0D0E0E0E0E0F0D0F0E0E0E0F0D0E0E0D0E0F0D0E0E0D0E0E0D0E0E0D0E0F0
|
||||
D0E0E0D0E0E0D0E0E0483428906848A06848000000282428484848787878FFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFF906838A05848905838482428483418482428483418482428483418
|
||||
482428483418482428483418482428483418482428483418582428483428482428483418582428
|
||||
483428482428483418582428483428582428483418582428483428582428483418582428483428
|
||||
A06848A06848000000383438484848787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
905848906838905848906838905848906838906848906838905848906838A06848906838905848
|
||||
906848A06848906838905848906848A06848906848A06848906848A06848906848A06848906848
|
||||
A06848906848A06848906848A06848906848A06848906848A06848906848A06848000000282428
|
||||
484848787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08C78D09C68A05848906838A05848
|
||||
906838A05848906838A05848906838A05848906838A05848906838A05848906838A05848906838
|
||||
A05848906838A05848A06838A05848906838A05848A06838A06848A06838A05848A06848A06848
|
||||
A06838A05848A06848A06848A06838A06848684828000000383438484848787878FFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF784838000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000283428383438484848787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF686868484848383438282428383438282428383438282428
|
||||
383438282428383438282428383438282428383438282428383438282428383438282428383438
|
||||
282428383438282428383438282428383438282428383438282428383438282428383438383438
|
||||
484848686868FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFF787878787878787878686868686868686868686868686868686868686868686868686868
|
||||
686868686868686868686868686868686868686868686868686868686868686868686868686868
|
||||
686868686868686868686868686868686868686868686868686868686868787878FFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFF
|
||||
|
||||
end
|
||||
%%PageTrailer
|
||||
%%Trailer
|
||||
%%EOF
|
Binary file not shown.
After Width: | Height: | Size: 3.0 KiB |
|
@ -0,0 +1,456 @@
|
|||
%!PS-Adobe-3.0 EPSF-3.0
|
||||
%%Creator: (ImageMagick)
|
||||
%%Title: (../images/i-core.eps)
|
||||
%%CreationDate: (2012-04-20T17:48:52+02:00)
|
||||
%%BoundingBox: 0 0 48 48
|
||||
%%HiResBoundingBox: 0 0 48 48
|
||||
%%DocumentData: Clean7Bit
|
||||
%%LanguageLevel: 1
|
||||
%%Pages: 1
|
||||
%%EndComments
|
||||
|
||||
%%BeginDefaults
|
||||
%%EndDefaults
|
||||
|
||||
%%BeginProlog
|
||||
%
|
||||
% Display a color image. The image is displayed in color on
|
||||
% Postscript viewers or printers that support color, otherwise
|
||||
% it is displayed as grayscale.
|
||||
%
|
||||
/DirectClassPacket
|
||||
{
|
||||
%
|
||||
% Get a DirectClass packet.
|
||||
%
|
||||
% Parameters:
|
||||
% red.
|
||||
% green.
|
||||
% blue.
|
||||
% length: number of pixels minus one of this color (optional).
|
||||
%
|
||||
currentfile color_packet readhexstring pop pop
|
||||
compression 0 eq
|
||||
{
|
||||
/number_pixels 3 def
|
||||
}
|
||||
{
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/number_pixels exch 1 add 3 mul def
|
||||
} ifelse
|
||||
0 3 number_pixels 1 sub
|
||||
{
|
||||
pixels exch color_packet putinterval
|
||||
} for
|
||||
pixels 0 number_pixels getinterval
|
||||
} bind def
|
||||
|
||||
/DirectClassImage
|
||||
{
|
||||
%
|
||||
% Display a DirectClass image.
|
||||
%
|
||||
systemdict /colorimage known
|
||||
{
|
||||
columns rows 8
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ DirectClassPacket } false 3 colorimage
|
||||
}
|
||||
{
|
||||
%
|
||||
% No colorimage operator; convert to grayscale.
|
||||
%
|
||||
columns rows 8
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ GrayDirectClassPacket } image
|
||||
} ifelse
|
||||
} bind def
|
||||
|
||||
/GrayDirectClassPacket
|
||||
{
|
||||
%
|
||||
% Get a DirectClass packet; convert to grayscale.
|
||||
%
|
||||
% Parameters:
|
||||
% red
|
||||
% green
|
||||
% blue
|
||||
% length: number of pixels minus one of this color (optional).
|
||||
%
|
||||
currentfile color_packet readhexstring pop pop
|
||||
color_packet 0 get 0.299 mul
|
||||
color_packet 1 get 0.587 mul add
|
||||
color_packet 2 get 0.114 mul add
|
||||
cvi
|
||||
/gray_packet exch def
|
||||
compression 0 eq
|
||||
{
|
||||
/number_pixels 1 def
|
||||
}
|
||||
{
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/number_pixels exch 1 add def
|
||||
} ifelse
|
||||
0 1 number_pixels 1 sub
|
||||
{
|
||||
pixels exch gray_packet put
|
||||
} for
|
||||
pixels 0 number_pixels getinterval
|
||||
} bind def
|
||||
|
||||
/GrayPseudoClassPacket
|
||||
{
|
||||
%
|
||||
% Get a PseudoClass packet; convert to grayscale.
|
||||
%
|
||||
% Parameters:
|
||||
% index: index into the colormap.
|
||||
% length: number of pixels minus one of this color (optional).
|
||||
%
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/offset exch 3 mul def
|
||||
/color_packet colormap offset 3 getinterval def
|
||||
color_packet 0 get 0.299 mul
|
||||
color_packet 1 get 0.587 mul add
|
||||
color_packet 2 get 0.114 mul add
|
||||
cvi
|
||||
/gray_packet exch def
|
||||
compression 0 eq
|
||||
{
|
||||
/number_pixels 1 def
|
||||
}
|
||||
{
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/number_pixels exch 1 add def
|
||||
} ifelse
|
||||
0 1 number_pixels 1 sub
|
||||
{
|
||||
pixels exch gray_packet put
|
||||
} for
|
||||
pixels 0 number_pixels getinterval
|
||||
} bind def
|
||||
|
||||
/PseudoClassPacket
|
||||
{
|
||||
%
|
||||
% Get a PseudoClass packet.
|
||||
%
|
||||
% Parameters:
|
||||
% index: index into the colormap.
|
||||
% length: number of pixels minus one of this color (optional).
|
||||
%
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/offset exch 3 mul def
|
||||
/color_packet colormap offset 3 getinterval def
|
||||
compression 0 eq
|
||||
{
|
||||
/number_pixels 3 def
|
||||
}
|
||||
{
|
||||
currentfile byte readhexstring pop 0 get
|
||||
/number_pixels exch 1 add 3 mul def
|
||||
} ifelse
|
||||
0 3 number_pixels 1 sub
|
||||
{
|
||||
pixels exch color_packet putinterval
|
||||
} for
|
||||
pixels 0 number_pixels getinterval
|
||||
} bind def
|
||||
|
||||
/PseudoClassImage
|
||||
{
|
||||
%
|
||||
% Display a PseudoClass image.
|
||||
%
|
||||
% Parameters:
|
||||
% class: 0-PseudoClass or 1-Grayscale.
|
||||
%
|
||||
currentfile buffer readline pop
|
||||
token pop /class exch def pop
|
||||
class 0 gt
|
||||
{
|
||||
currentfile buffer readline pop
|
||||
token pop /depth exch def pop
|
||||
/grays columns 8 add depth sub depth mul 8 idiv string def
|
||||
columns rows depth
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ currentfile grays readhexstring pop } image
|
||||
}
|
||||
{
|
||||
%
|
||||
% Parameters:
|
||||
% colors: number of colors in the colormap.
|
||||
% colormap: red, green, blue color packets.
|
||||
%
|
||||
currentfile buffer readline pop
|
||||
token pop /colors exch def pop
|
||||
/colors colors 3 mul def
|
||||
/colormap colors string def
|
||||
currentfile colormap readhexstring pop pop
|
||||
systemdict /colorimage known
|
||||
{
|
||||
columns rows 8
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ PseudoClassPacket } false 3 colorimage
|
||||
}
|
||||
{
|
||||
%
|
||||
% No colorimage operator; convert to grayscale.
|
||||
%
|
||||
columns rows 8
|
||||
[
|
||||
columns 0 0
|
||||
rows neg 0 rows
|
||||
]
|
||||
{ GrayPseudoClassPacket } image
|
||||
} ifelse
|
||||
} ifelse
|
||||
} bind def
|
||||
|
||||
/DisplayImage
|
||||
{
|
||||
%
|
||||
% Display a DirectClass or PseudoClass image.
|
||||
%
|
||||
% Parameters:
|
||||
% x & y translation.
|
||||
% x & y scale.
|
||||
% label pointsize.
|
||||
% image label.
|
||||
% image columns & rows.
|
||||
% class: 0-DirectClass or 1-PseudoClass.
|
||||
% compression: 0-none or 1-RunlengthEncoded.
|
||||
% hex color packets.
|
||||
%
|
||||
gsave
|
||||
/buffer 512 string def
|
||||
/byte 1 string def
|
||||
/color_packet 3 string def
|
||||
/pixels 768 string def
|
||||
|
||||
currentfile buffer readline pop
|
||||
token pop /x exch def
|
||||
token pop /y exch def pop
|
||||
x y translate
|
||||
currentfile buffer readline pop
|
||||
token pop /x exch def
|
||||
token pop /y exch def pop
|
||||
currentfile buffer readline pop
|
||||
token pop /pointsize exch def pop
|
||||
/Times-Roman findfont pointsize scalefont setfont
|
||||
x y scale
|
||||
currentfile buffer readline pop
|
||||
token pop /columns exch def
|
||||
token pop /rows exch def pop
|
||||
currentfile buffer readline pop
|
||||
token pop /class exch def pop
|
||||
currentfile buffer readline pop
|
||||
token pop /compression exch def pop
|
||||
class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
|
||||
} bind def
|
||||
%%EndProlog
|
||||
%%Page: 1 1
|
||||
%%PageBoundingBox: 0 0 48 48
|
||||
userdict begin
|
||||
DisplayImage
|
||||
0 0
|
||||
48 48
|
||||
12.000000
|
||||
48 48
|
||||
0
|
||||
0
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000
|
||||
000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000
|
||||
000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
|
||||
000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
|
||||
000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000
|
||||
000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
|
||||
000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000
|
||||
000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFF000000A39121F5E78AEFD532C5B029A391216E6216000000FFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFF00000092821A
|
||||
000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000A39121
|
||||
F7EEAEEFD532C5B029A391216E6216000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFF000000F2D72C00000000000092821AF2D72C000000FFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000A39121F5E78AEFD532C5B029A39121
|
||||
5B5112000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
|
||||
F2D72CF2D72C5A5010F2D72CF2D72C000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
0000000A09004C450B887A1BCFC36CEADD8BE9CF38E5CA38D1BA31B19C27807319453E0A0A0900
|
||||
000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000F2D72CF2D72CF2D72C
|
||||
92821A000000000000FFFFFFFFFFFFFFFFFFFFFFFF0000002421037E721ADAC036EDD33AF4D83A
|
||||
F5DE5BF3DD5AEED336EBD136E8CC35E5CA34E2C834DBC033CBB0317063171E1C02000000FFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFF00000092821AF2D72CF2D72CF2D72CF2D72CF2D72CF2D72C000000
|
||||
FFFFFFFFFFFF000000746817D9C135E9CF38F5DA38F8DC38F6DB37F5DA35F3D834F2D634EFD532
|
||||
EDD231E9CE32E6CA32E4C932E0C433D7BC33CBB033605513000000FFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
|
||||
F2D72CF2D72CF2D72CF2D72CF2D72C000000000000000000FFFFFF000000242204AF9C29EAD039
|
||||
F2D738F9DE36FADE36F8DD35F7DD32F7DB31F5DB2FF4DA2FF2D72FF0D52FEDD230EBCF30E9CC30
|
||||
E6C932E1C533DCBF33CDB2338F7D211C1A02000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000F2D72CF2D72C000000000000F2D72C
|
||||
F2D72C000000FFFFFFFFFFFF000000302C06CCB432F2D739FADD39FADF36FADF33FADE32FADF30
|
||||
F9DE2DF8DD2DF7DD2CF6DB2CF4DA2CF2D72CF0D52DEED32CECD02EE8CB2FE3C630E0C331DABC32
|
||||
CDAF31A38B28221F03000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFF000000F2D72CF2D72C000000FFFFFF
|
||||
242004CAB332F3D539F9DD37FADE35FADE32FADF30FADF2EFAE02CF9DF2AF9DF29F8DE29F8DD29
|
||||
F6DC28F4DA29F3D82AF0D52AEFD22BEBCF2CE6C92DE3C630DEC030D3B630B79B2D917C24171502
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFF000000F2D72CF2D72C000000000000AE9A28F1D438F9DD37FADD34
|
||||
FADE32FADE2FFADF2CFAE02AFAE029F9DF27F9DF26F9DF25F8DE25F7DE25F6DC26B8A41DB6A21D
|
||||
F1D529EED12AEACD2BE6C92CE0C22EDBBB2FCAAC2EB1952C73601C000000FFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFF000000F2D72C000000786B18F1D33AF8DB38F9DC35F9DD31F9DD2EFADF2B3B3509746812
|
||||
FAE026F9E1249C8D15000000F9E023F8DE23F7DD235F550D1A1704C8B11FEFD327C3AB21685B13
|
||||
C7AD26DEBF2DD6B62FC2A42DA38827463C0F000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000252104
|
||||
ECCE3AF8D93AF8DA36F9DB32F9DC2FF9DE2BF9DE29CBB51F0D0C029B8B1551490A161402A59515
|
||||
FAE120F9DF20F8DE21CCB61C1412020E0C0260550F040400151203C9AD24DFC02CDAB92DCFAE2E
|
||||
B9992B957A25121001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000088781DF4D43BF7D837F8DA32F8DB2F
|
||||
F8DC2CF9DD29F9DE26F9DF244B430A040400161402C1AE17FAE11FFAE21FF9E120F8DF21F8DD20
|
||||
BDA91A0000000000004C430CECCE27E6C829E2C22ADABA2CD3B22EC3A22B987D2440350E000000
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFF0A0900E1C237F7D639F7D835F8D931F8DB2DF8DC2AF9DD27F9DE25665B0E
|
||||
0000002A2505000000A59513FAE324FAE32AF9E22AF7DF279B8B15090801060500000000121002
|
||||
DEC123E8C927E2C228DCBB29D3B02BC5A32BA48626745E1D070600FFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49410C
|
||||
E5C537F6D537F7D732F7D92FF7DA2BF8DB28F8DD25F8DE23373207CBB619FAE11D766B0D000000
|
||||
CCBA27FAE63EF3E041ECD8397A6E14403908E7CD1EBAA3180C0A01231E05E9CA27E2C228DCBC28
|
||||
D3B12ACBA92BAE8F278369201F1A05FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000080701BE9C837F5D435F6D631F6D82D
|
||||
F7DA2AF7DB27F8DD23F8DE22F9DF1FF9E01DFAE11CFAE21CCBB925ECDA44F8E75EEBDC5DDBCB49
|
||||
D6C230E1C920F0D51EEBD01E7768101D1904917D16E2C227DCBB27D3B128CAA729B998298D7121
|
||||
362B0C000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFF000000A68E26EAC735F4D333F5D530F6D82CF6D829F7DA26F8DC23F8DE21
|
||||
F9DF1FF9E01DFAE11BFAE323FBE84FFCED77F8ED8AEADF82D4C85FC4B335C7B21ED4BC1ACAB31A
|
||||
D8BD1EC6AD1CCAAE1EE2C125DCBA27D2B126C8A427B99727957622504013000000FFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
|
||||
AC9228DAB931EFCC31F4D430F5D72BF6D828F6D925F7DB23F8DD20F9DF1DF9DF1CF7DE1DF6E240
|
||||
FCEE7EFDF3A8FCF4B5F1E8A3DACE75BCAC39A090189D8B139E8B14C3AA1ADCBF1FE3C321E1C025
|
||||
DAB826D1AF26C6A327B89526967822604B17000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000BF9F2EE0BE32F0CE30F3D22E
|
||||
F3D42BF5D628F6D825F7DB22F8DC1FF8DE1EF7DD1BEFD929E7D75CF8EE9FFDF7C6FDF8CCF8F1B7
|
||||
E3D77FC0B03A8677125C520B6C5E0DB09917D6B91EE1C122DEBE24D9B525CFAB25C3A126B49224
|
||||
9A792272591B000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFF000000BFA02DDEBC31EECA2FF2D02DF2D22AF4D427F5D724F6D923
|
||||
F7DB20F7DC1EF7DC1DEBD42FDDCF66F3EAA8FBF6CDFCF7CFFCF4B5EFE17CC6B4347F710F53490A
|
||||
4F450A917E13D3B61EE0BF21DDBB23D6B324CBA824C09C24B08D2496762172571A000000FFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
000000AA8E27D1B02EE8C52FEFCD2CF1CF2AF3D226F4D524F5D722F6D920F6DA1EF6DB1DEBD42F
|
||||
D8CA5FE8DE96ECE6B3F0E9B4F6EB9AE9D95F92831B64580B6E600D61540C9F8A15D7B91DE0BF20
|
||||
DAB722D2AE23C8A524BD9922AB88238F6E1F5D4715000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000967E20DBB631E9C42E
|
||||
ECC92DEECC29EFCF27F2D225F3D422F4D621F5D81EF6DA1DEFD62BDDCA48CCC067B6AD6EB9B06B
|
||||
C2B4569A8B25594F0C6F610DA79114A18C15C9AC1AE0BF1FDFBC21D8B622CFAB23C39F22B79223
|
||||
A5812181631D44340E000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000006A5A14CDAB2DE2BD2EE8C42CEBC829EDCC26EFCE23
|
||||
F0D122F2D420F4D51FF4D71EF5D923F0D834DFCC44BFB045A49636A2922492801387770FBEA716
|
||||
DCBE1AD9BB1BE3C11FE1BF20DBB820D2AF21C9A522BF9B22AF8A2197741F775A1A32260A000000
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFF342D08C8A52CDFB92CE4BF2BE6C328E9C826EBCA24EECD22F0D020F1D31EE6CA1C
|
||||
907F14665C145E551B61581C564E1450470C4E44085449099C8712BAA016E4C21EDCBA1EDDBA20
|
||||
D6B420CFAA21C49F20B89320A984208B6B1D7155181A1503FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF070700B89528
|
||||
DCB42CDFB92BE2BD29E5C127E8C524EAC822E9C820AC9617050400090503371E153E25193F2717
|
||||
261E0931200C472B1345281437230E3D300A9D8614BA9C19D9B520D0AC20C8A320BD9720B28D1F
|
||||
9F7A1D7F601A6E5117060500FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000604F12C49F29DAB22ADDB828E0BC27
|
||||
E2BF25E6C221CFB11D171303000000452914A84B44AE4A4AA547474E2222783333A24444A34842
|
||||
7E3E2F39270D010100907714CCA91EC9A61FC19C20B8921FA9841F906D1C745617382A09000000
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFF181602A18222C8A328D7B129DAB526DCB823D2B120282206000000
|
||||
090601AC4848C45353CA5555C85454863C3CA94949C75454BF5151AC4949622929261F052D2506
|
||||
987C17BB971DB8921EAD871E99761C7B5C186F51170D0B00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
0000004D3F0DB49123CFA827D3AE26D7B2259F84190101001714033A290CBA4E4ED05555D55A5A
|
||||
B94C4C7C3939B34949C85353B54B4B9C43437D38380E0C020302005D4A0EA5821AAE881D9E7A1B
|
||||
795B166A4D14312608000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000846A19BC9625
|
||||
CCA425D1AA253D320A0000000F0C02722F2FCD5555DD5C5CD55A5AA94848924040C55151CA5555
|
||||
B74C4C9841417436360706011D17041410038E6F17A07B1B816216664B134E390D000000FFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B180198761FB89124CAA1259075180A0801
|
||||
140D03823535D35757DB5C5CD65A5AB44C4CAD4848CD5555C75454B54B4B9340406C3333201606
|
||||
000000070501765A137F6015644A12583F100F0D00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFF000000201C038A6C1BAF8821BF96226E5812000000CE5555D45959D85B5B
|
||||
D45959C55252C14F4FCC5454BF4F4FAA4848873C3C643131050300251D067356127E5F15654B11
|
||||
563D0F131001000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
000000161401755D15A47F1EB98F21C66F3ECD5555CE5555CF5555D15656CD5454C85252C35151
|
||||
B54B4B9B41417837375E2E2E775813926E18795A14664A1146330B0F0D00000000FFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000004F400B
|
||||
A67F1EBC6D38C35050C35151C45151C45252BF5050BB4E4EB04A4A9C4343853A3A6A3333714027
|
||||
8764167054126146102B2105000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000001714015B480DB55444B84E4E
|
||||
B74B4BB14B4BAD4848A144449140407D39396C33336B392B76571263480F3125060F0D00000000
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000009080059311B894430A14343913E3E823939
|
||||
7235357042235F40163A2D071C1802060600000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFF
|
||||
|
||||
end
|
||||
%%PageTrailer
|
||||
%%Trailer
|
||||
%%EOF
|
Binary file not shown.
After Width: | Height: | Size: 3.1 KiB |
|
@ -0,0 +1,86 @@
|
|||
|
||||
\usepackage[default,osfigures,scale=0.95]{opensans}
|
||||
\usepackage{xspace}
|
||||
\usepackage{fancyhdr}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{enumitem}
|
||||
\usepackage[sf,bf]{titlesec}
|
||||
\usepackage{titletoc}
|
||||
\usepackage[paper=a4paper,headheight=30pt,tmargin=1.5in,bmargin=1in]{geometry}
|
||||
%\usepackage{layouts}
|
||||
|
||||
\renewlist{itemize}{itemize}{9}
|
||||
\setlist[itemize]{label=\textbullet}
|
||||
|
||||
% The LaTeX Companion -- p. 204.
|
||||
% Miniature display of the page layout.
|
||||
%\newcommand{\showpage}{%
|
||||
% \setlayoutscale{0.65}\setlabelfont{\tiny}%
|
||||
% \printheadingsfalse\printparametersfalse%
|
||||
% \currentpage\pagedesign%
|
||||
%}
|
||||
|
||||
\titlecontents{section}[0pc]
|
||||
{\sffamily\bfseries} % above code.
|
||||
{\contentslabel{1pc}} % numbered entry format.
|
||||
{} % numberless entry format.
|
||||
{\titlerule*[8pt]{.}\textsc{\textbf{{\contentspage}}}} % page format.
|
||||
\titlecontents{subsection}[0pc]
|
||||
{\sffamily} % above code.
|
||||
{\contentslabel{2pc}} % numbered entry format.
|
||||
{} % numberless entry format.
|
||||
{\titlerule*[8pt]{.}\textsc{\textbf{{\contentspage}}}} % page format.
|
||||
\titlecontents{subsubsection}[1pc]
|
||||
{\sffamily} % above code.
|
||||
{\contentslabel{2pc}} % numbered entry format.
|
||||
{} % numberless entry format.
|
||||
{\titlerule*[8pt]{.}\textsc{\textbf{{\contentspage}}}} % page format.
|
||||
|
||||
\newcommand{\key}[1]{\raisebox{-0.5\baselineskip}{\rule{0pt}{1.5\baselineskip}}\fbox{\textsf{#1}}}
|
||||
|
||||
\newcommand{\DUroleul}[1]{\underline{#1}\xspace}
|
||||
\newcommand{\DUrolesc}[1]{\textsc{#1}\xspace}
|
||||
\newcommand{\DUrolecb}[1]{\textbf{\texttt{#1}}\xspace}
|
||||
\newcommand{\DUrolefboxtt}[1]{\fbox{\texttt{#1}}\xspace}
|
||||
|
||||
\newcommand{\DUtitlenote}[1]{\noindent\textbf{#1}\smallskip}
|
||||
|
||||
\newcommand{\DUadmonitionnote}[1]{%
|
||||
\begin{center}
|
||||
\sffamily
|
||||
\begin{array}[t]{m{1cm}!{\vrule width 1pt}m{.90\textwidth}}
|
||||
\raisebox{0.0cm}{\includegraphics[scale=0.5]{./images/clipboard.eps}} &
|
||||
\begin{minipage}[t]{.85\textwidth} #1
|
||||
\end{minipage} \\
|
||||
\end{array}
|
||||
\end{center}
|
||||
}
|
||||
|
||||
\newcommand{\DUtitleerror}[1]{\noindent\textbf{\color{red}#1}\smallskip}
|
||||
|
||||
\newcommand{\DUadmonitionerror}[1]{%
|
||||
\begin{center}
|
||||
\sffamily
|
||||
\begin{array}[t]{m{1cm}!{\vrule width 1pt}m{.90\textwidth}}
|
||||
\raisebox{0.0cm}{\includegraphics[scale=0.5]{./images/i-core.eps}} &
|
||||
\begin{minipage}[t]{.85\textwidth} #1
|
||||
\end{minipage} \\
|
||||
\end{array}
|
||||
\end{center}
|
||||
}
|
||||
|
||||
\newcommand{\UPMC} {\textsc{upmc}\xspace}
|
||||
\newcommand{\LIP} {\textsc{lip6}\xspace}
|
||||
\newcommand{\SoC} {\textsc{S}o\textsc{C}\xspace}
|
||||
|
||||
\renewcommand{\headrulewidth}{0.2mm}
|
||||
\renewcommand{\footrulewidth}{0.2mm}
|
||||
\renewcommand{\sectionmark}[1]{\markboth{\thesection\ #1}{\thesection\ #1}}
|
||||
\renewcommand{\subsectionmark}[1]{}
|
||||
\lhead[]{\textsc{SoC} Documentation}
|
||||
\rhead[]{September 2014}
|
||||
\lfoot[]{\UPMC/\LIP/\SoC}
|
||||
\rfoot[]{\thepage}
|
||||
\cfoot[]{}
|
||||
|
||||
\pagestyle{fancy}
|
|
@ -49,6 +49,7 @@
|
|||
hurricane/Marker.h hurricane/Markers.h
|
||||
hurricane/Name.h hurricane/Names.h
|
||||
hurricane/NetExternalComponents.h
|
||||
hurricane/NetRoutingProperty.h
|
||||
hurricane/Net.h hurricane/Nets.h
|
||||
hurricane/Occurrence.h hurricane/Occurrences.h
|
||||
hurricane/Pad.h hurricane/Pads.h
|
||||
|
@ -140,6 +141,7 @@
|
|||
Pad.cpp
|
||||
RoutingPad.cpp
|
||||
NetExternalComponents.cpp
|
||||
NetRoutingProperty.cpp
|
||||
Reference.cpp
|
||||
Rubber.cpp
|
||||
Quark.cpp
|
||||
|
|
|
@ -14,11 +14,11 @@
|
|||
// +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
#include "katabatic/NetRoutingProperty.h"
|
||||
#include "hurricane/NetRoutingProperty.h"
|
||||
#include "hurricane/Net.h"
|
||||
|
||||
|
||||
namespace Katabatic {
|
||||
namespace Hurricane {
|
||||
|
||||
using namespace std;
|
||||
using Hurricane::Property;
|
||||
|
@ -50,7 +50,7 @@ namespace Katabatic {
|
|||
// -------------------------------------------------------------------
|
||||
// Class : "NetRoutingProperty"
|
||||
|
||||
Name NetRoutingProperty::_name = "Katabatic NetRouting State";
|
||||
Name NetRoutingProperty::_name = "Hurricane NetRouting State";
|
||||
|
||||
|
||||
NetRoutingProperty* NetRoutingProperty::create ( Net* owner )
|
||||
|
@ -135,4 +135,4 @@ namespace Katabatic {
|
|||
}
|
||||
|
||||
|
||||
} // Katabatic namespace.
|
||||
} // Hurricane namespace.
|
|
@ -338,9 +338,19 @@ namespace Hurricane {
|
|||
break;
|
||||
case BiggestArea:
|
||||
default:
|
||||
if ( getArea(*icomponent) > getArea(bestComponent) )
|
||||
bestComponent = *icomponent;
|
||||
break;
|
||||
{
|
||||
double compArea = getArea(*icomponent);
|
||||
double bestArea = getArea(bestComponent);
|
||||
|
||||
if (compArea == bestArea) {
|
||||
if (icomponent->getId() < bestComponent->getId())
|
||||
bestComponent = *icomponent;
|
||||
} else {
|
||||
if (compArea > bestArea)
|
||||
bestComponent = *icomponent;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -14,33 +14,24 @@
|
|||
// +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
#ifndef KATABATIC_NET_ROUTING_PROPERTY_H
|
||||
#define KATABATIC_NET_ROUTING_PROPERTY_H
|
||||
#ifndef HURRICANE_NET_ROUTING_PROPERTY_H
|
||||
#define HURRICANE_NET_ROUTING_PROPERTY_H
|
||||
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include "hurricane/Name.h"
|
||||
#include "hurricane/Property.h"
|
||||
#include "hurricane/Slot.h"
|
||||
#include "hurricane/Net.h"
|
||||
|
||||
|
||||
namespace Hurricane {
|
||||
class Net;
|
||||
}
|
||||
|
||||
namespace Katabatic {
|
||||
|
||||
using Hurricane::_TName;
|
||||
using Hurricane::Name;
|
||||
using Hurricane::Record;
|
||||
using Hurricane::PrivateProperty;
|
||||
using Hurricane::DBo;
|
||||
using Hurricane::Net;
|
||||
|
||||
class NetRoutingProperty;
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Katabatic::NetRoutingState".
|
||||
// Class : "Hurricane::NetRoutingState".
|
||||
|
||||
class NetRoutingState {
|
||||
friend class NetRoutingProperty;
|
||||
|
@ -88,7 +79,7 @@ namespace Katabatic {
|
|||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Katabatic::NetRoutingProperty".
|
||||
// Class : "Hurricane::NetRoutingProperty".
|
||||
|
||||
class NetRoutingProperty : public PrivateProperty {
|
||||
friend class NetRoutingExtension;
|
||||
|
@ -118,7 +109,7 @@ namespace Katabatic {
|
|||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Class : "Katabatic::NetRoutingExtension".
|
||||
// Class : "Hurricane::NetRoutingExtension".
|
||||
|
||||
class NetRoutingExtension {
|
||||
public:
|
||||
|
@ -186,10 +177,10 @@ namespace Katabatic {
|
|||
}
|
||||
|
||||
|
||||
} // Katabatic namespace.
|
||||
} // Hurricane namespace.
|
||||
|
||||
|
||||
INSPECTOR_P_SUPPORT(Katabatic::NetRoutingState);
|
||||
INSPECTOR_P_SUPPORT(Hurricane::NetRoutingState);
|
||||
|
||||
|
||||
#endif // KATABATIC_NET_ROUTING_PROPERTY_H
|
||||
#endif // HURRICANE_NET_ROUTING_PROPERTY_H
|
|
@ -107,23 +107,30 @@ extern "C" {
|
|||
|
||||
|
||||
// Standart Attribute.
|
||||
DirectGetLongAttribute(PyRegularLayer_getExtentionCap ,getExtentionCap ,PyRegularLayer,RegularLayer)
|
||||
DirectGetLongAttribute(PyRegularLayer_getExtentionWidth,getExtentionWidth,PyRegularLayer,RegularLayer)
|
||||
|
||||
accessorLayerFromVoid(getBasicLayer ,PyRegularLayer,RegularLayer)
|
||||
updatorFromBasicLayer(setBasicLayer ,PyRegularLayer,RegularLayer)
|
||||
DBoDestroyAttribute (PyRegularLayer_destroy, PyRegularLayer)
|
||||
DBoDestroyAttribute (PyRegularLayer_destroy,PyRegularLayer)
|
||||
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
// PyRegularLayer Attribute Method table.
|
||||
|
||||
PyMethodDef PyRegularLayer_Methods[] =
|
||||
{ { "create" , (PyCFunction)PyRegularLayer_create , METH_VARARGS|METH_STATIC
|
||||
, "Create a new RegularLayer." }
|
||||
, { "getBasicLayer", (PyCFunction)PyRegularLayer_getBasicLayer, METH_NOARGS
|
||||
, "Get the BasicLayer associated to this RegularLayer." }
|
||||
, { "setBasicLayer", (PyCFunction)PyRegularLayer_setBasicLayer, METH_VARARGS
|
||||
, "Associate a BasicLayer with this RegularLayer." }
|
||||
, { "destroy" , (PyCFunction)PyRegularLayer_destroy , METH_NOARGS
|
||||
, "destroy associated hurricane object, the python object remains." }
|
||||
{ { "create" , (PyCFunction)PyRegularLayer_create , METH_VARARGS|METH_STATIC
|
||||
, "Create a new RegularLayer." }
|
||||
, { "getExtentionWidth", (PyCFunction)PyRegularLayer_getExtentionWidth, METH_NOARGS
|
||||
, "Return the width extension (delta)." }
|
||||
, { "getExtentionCap" , (PyCFunction)PyRegularLayer_getExtentionCap , METH_NOARGS
|
||||
, "Return the cap extension (begin/end delta)." }
|
||||
, { "getBasicLayer" , (PyCFunction)PyRegularLayer_getBasicLayer , METH_NOARGS
|
||||
, "Get the BasicLayer associated to this RegularLayer." }
|
||||
, { "setBasicLayer" , (PyCFunction)PyRegularLayer_setBasicLayer , METH_VARARGS
|
||||
, "Associate a BasicLayer with this RegularLayer." }
|
||||
, { "destroy" , (PyCFunction)PyRegularLayer_destroy , METH_NOARGS
|
||||
, "destroy associated hurricane object, the python object remains." }
|
||||
, {NULL, NULL, 0, NULL} /* sentinel */
|
||||
};
|
||||
|
||||
|
|
|
@ -305,10 +305,11 @@ namespace Katabatic {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
_horizontal1->invalidate( this );
|
||||
_horizontal2->invalidate( this );
|
||||
_vertical1 ->invalidate( this );
|
||||
}
|
||||
_horizontal1->invalidate( this );
|
||||
_horizontal2->invalidate( this );
|
||||
_vertical1 ->invalidate( this );
|
||||
|
||||
ltraceout(110);
|
||||
DebugSession::close();
|
||||
|
|
|
@ -252,9 +252,10 @@ namespace Katabatic {
|
|||
|
||||
setLayer ( (delta == 0) ? rg->getRoutingLayer(depthContact) : rg->getContactLayer(depthContact) );
|
||||
}
|
||||
|
||||
_horizontal1->invalidate( this );
|
||||
_vertical1 ->invalidate( this );
|
||||
}
|
||||
_horizontal1->invalidate( this );
|
||||
_vertical1 ->invalidate( this );
|
||||
|
||||
ltraceout(110);
|
||||
DebugSession::close ();
|
||||
|
|
|
@ -290,10 +290,11 @@ namespace Katabatic {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
_horizontal1->invalidate( this );
|
||||
_vertical1 ->invalidate( this );
|
||||
_vertical2 ->invalidate( this );
|
||||
}
|
||||
_horizontal1->invalidate( this );
|
||||
_vertical1 ->invalidate( this );
|
||||
_vertical2 ->invalidate( this );
|
||||
|
||||
ltraceout(110);
|
||||
DebugSession::close ();
|
||||
|
|
|
@ -16,7 +16,6 @@ endif ( CHECK_DETERMINISM )
|
|||
)
|
||||
set ( includes katabatic/Constants.h
|
||||
katabatic/Observer.h
|
||||
katabatic/NetRoutingProperty.h
|
||||
katabatic/Configuration.h
|
||||
katabatic/ChipTools.h
|
||||
katabatic/AutoContact.h
|
||||
|
@ -38,7 +37,6 @@ endif ( CHECK_DETERMINISM )
|
|||
set ( mocIncludes katabatic/GraphicKatabaticEngine.h )
|
||||
set ( cpps Configuration.cpp
|
||||
Observer.cpp
|
||||
NetRoutingProperty.cpp
|
||||
ChipTools.cpp
|
||||
AutoContact.cpp
|
||||
AutoContactTerminal.cpp
|
||||
|
|
|
@ -921,25 +921,26 @@ namespace {
|
|||
_do_xG();
|
||||
break;
|
||||
default:
|
||||
cerr << Bug( "Unmanaged Configuration [%d] = [%d+%d+%d+%d,%d+%d] %s in %s\n"
|
||||
" The global routing seems to be defective."
|
||||
, _connexity.connexity
|
||||
, _connexity.fields.globals
|
||||
, _connexity.fields.M1
|
||||
, _connexity.fields.M2
|
||||
, _connexity.fields.M3
|
||||
, _connexity.fields.Pin
|
||||
, _connexity.fields.Pad
|
||||
, _net->_getString().c_str()
|
||||
, getString(_gcell).c_str()
|
||||
) << endl;
|
||||
throw Bug( "Unmanaged Configuration [%d] = [%d+%d+%d+%d,%d+%d] %s in %s\n"
|
||||
" The global routing seems to be defective."
|
||||
, _connexity.connexity
|
||||
, _connexity.fields.globals
|
||||
, _connexity.fields.M1
|
||||
, _connexity.fields.M2
|
||||
, _connexity.fields.M3
|
||||
, _connexity.fields.Pin
|
||||
, _connexity.fields.Pad
|
||||
, _net->_getString().c_str()
|
||||
, getString(_gcell).c_str()
|
||||
);
|
||||
_do_xG();
|
||||
}
|
||||
|
||||
if (straightLine) {
|
||||
// This a global router problem.
|
||||
cerr << Bug( "Unmanaged configuration: straight line,\n"
|
||||
cerr << Bug( "Unmanaged configuration: straight line in %s,\n"
|
||||
" The global routing seems to be defective."
|
||||
, _net->_getString().c_str()
|
||||
) << endl;
|
||||
return;
|
||||
} else {
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include "hurricane/Torus.h"
|
||||
#include "hurricane/Layer.h"
|
||||
#include "hurricane/Net.h"
|
||||
#include "hurricane/NetRoutingProperty.h"
|
||||
|
||||
namespace Hurricane {
|
||||
class Name;
|
||||
|
@ -43,7 +44,6 @@ namespace CRL {
|
|||
|
||||
#include "katabatic/Constants.h"
|
||||
#include "katabatic/Configuration.h"
|
||||
#include "katabatic/NetRoutingProperty.h"
|
||||
#include "katabatic/GCell.h"
|
||||
#include "katabatic/AutoSegments.h"
|
||||
#include "katabatic/AutoContact.h"
|
||||
|
@ -64,6 +64,8 @@ namespace Katabatic {
|
|||
using Hurricane::Nets;
|
||||
using Hurricane::Cell;
|
||||
using Hurricane::Instance;
|
||||
using Hurricane::NetRoutingExtension;
|
||||
using Hurricane::NetRoutingState;
|
||||
using CRL::RoutingGauge;
|
||||
using CRL::RoutingLayerGauge;
|
||||
using CRL::ToolEngine;
|
||||
|
|
|
@ -26,12 +26,12 @@
|
|||
#include "hurricane/Vertical.h"
|
||||
#include "hurricane/RoutingPad.h"
|
||||
#include "hurricane/NetExternalComponents.h"
|
||||
#include "hurricane/NetRoutingProperty.h"
|
||||
#include "hurricane/Instance.h"
|
||||
#include "hurricane/Plug.h"
|
||||
#include "hurricane/Path.h"
|
||||
#include "hurricane/Query.h"
|
||||
#include "crlcore/AllianceFramework.h"
|
||||
#include "katabatic/NetRoutingProperty.h"
|
||||
#include "kite/RoutingPlane.h"
|
||||
#include "kite/TrackFixedSegment.h"
|
||||
#include "kite/Track.h"
|
||||
|
@ -55,6 +55,8 @@ namespace {
|
|||
using Hurricane::Vertical;
|
||||
using Hurricane::RoutingPad;
|
||||
using Hurricane::NetExternalComponents;
|
||||
using Hurricane::NetRoutingExtension;
|
||||
using Hurricane::NetRoutingState;
|
||||
using Hurricane::Instance;
|
||||
using Hurricane::Plug;
|
||||
using Hurricane::Path;
|
||||
|
@ -113,13 +115,13 @@ namespace {
|
|||
private:
|
||||
bool guessGlobalNet ( const Name&, Net* );
|
||||
private:
|
||||
Name _vddeName;
|
||||
Name _vddiName;
|
||||
Name _vsseName;
|
||||
Name _vssiName;
|
||||
Name _ckName;
|
||||
Name _ckiName;
|
||||
Name _ckoName;
|
||||
Name _vddePadNetName;
|
||||
Name _vddiPadNetName;
|
||||
Name _vssePadNetName;
|
||||
Name _vssiPadNetName;
|
||||
Name _ckPadNetName;
|
||||
Name _ckiPadNetName;
|
||||
Name _ckoPadNetName;
|
||||
Net* _vdde;
|
||||
Net* _vddi;
|
||||
Net* _vsse;
|
||||
|
@ -142,13 +144,13 @@ namespace {
|
|||
inline void GlobalNetTable::setBlockage ( Net* net ) { _blockage=net; }
|
||||
|
||||
GlobalNetTable::GlobalNetTable ( KiteEngine* kite )
|
||||
: _vddeName("vdde")
|
||||
, _vddiName("vddi")
|
||||
, _vsseName("vsse")
|
||||
, _vssiName("vssi")
|
||||
, _ckName ("pad" )
|
||||
, _ckiName ("ck" )
|
||||
, _ckoName ("cko" )
|
||||
: _vddePadNetName("vdde")
|
||||
, _vddiPadNetName("vddi")
|
||||
, _vssePadNetName("vsse")
|
||||
, _vssiPadNetName("vssi")
|
||||
, _ckPadNetName ("pad" )
|
||||
, _ckiPadNetName ("ck" )
|
||||
, _ckoPadNetName ("cko" )
|
||||
, _vdde (NULL)
|
||||
, _vddi (NULL)
|
||||
, _vsse (NULL)
|
||||
|
@ -214,7 +216,7 @@ namespace {
|
|||
}
|
||||
}
|
||||
|
||||
if (masterNet->getName() == _ckName) {
|
||||
if (masterNet->getName() == _ckPadNetName) {
|
||||
cmess1 << " - Using <" << net->getName() << "> as external chip clock net." << endl;
|
||||
_ck = net;
|
||||
}
|
||||
|
@ -236,17 +238,17 @@ namespace {
|
|||
if (_cki == NULL) cerr << Warning("No <cki> net at (for pads) chip level." ) << endl;
|
||||
else destroyRing( _cki );
|
||||
} else {
|
||||
_vddiName = "";
|
||||
_vssiName = "";
|
||||
_ckoName = "";
|
||||
_vddiPadNetName = "";
|
||||
_vssiPadNetName = "";
|
||||
_ckoPadNetName = "";
|
||||
|
||||
forEach ( Net*, inet, topCell->getNets() ) {
|
||||
if (NetRoutingExtension::isManualGlobalRoute(*inet)) continue;
|
||||
|
||||
Net::Type netType = inet->getType();
|
||||
if (netType == Net::Type::POWER) {
|
||||
if (_vddiName.isEmpty()) {
|
||||
_vddiName = inet->getName();
|
||||
if (_vddiPadNetName.isEmpty()) {
|
||||
_vddiPadNetName = inet->getName();
|
||||
_vddi = *inet;
|
||||
} else {
|
||||
cerr << Error("Second power supply net <%s> net at top block level will be ignored.\n"
|
||||
|
@ -258,8 +260,8 @@ namespace {
|
|||
}
|
||||
|
||||
if (netType == Net::Type::GROUND) {
|
||||
if (_vssiName.isEmpty()) {
|
||||
_vssiName = inet->getName();
|
||||
if (_vssiPadNetName.isEmpty()) {
|
||||
_vssiPadNetName = inet->getName();
|
||||
_vssi = *inet;
|
||||
} else {
|
||||
cerr << Error("Second power ground net <%s> net at top block level will be ignored.\n"
|
||||
|
@ -271,9 +273,9 @@ namespace {
|
|||
}
|
||||
|
||||
if (netType == Net::Type::CLOCK) {
|
||||
if (_ckoName.isEmpty()) {
|
||||
if (_ckoPadNetName.isEmpty()) {
|
||||
cmess1 << " - Using <" << inet->getName() << "> as internal (core) clock net." << endl;
|
||||
_ckoName = inet->getName();
|
||||
_ckoPadNetName = inet->getName();
|
||||
_cko = *inet;
|
||||
} else {
|
||||
cerr << Error("Second clock net <%s> net at top block level will be ignored.\n"
|
||||
|
@ -297,43 +299,43 @@ namespace {
|
|||
|
||||
bool GlobalNetTable::guessGlobalNet ( const Name& name, Net* net )
|
||||
{
|
||||
if (name == _vddeName) {
|
||||
if (name == _vddePadNetName) {
|
||||
cmess1 << " - Using <" << net->getName() << "> as corona (external:vdde) power net." << endl;
|
||||
_vdde = net;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (name == _vddiName) {
|
||||
if (name == _vddiPadNetName) {
|
||||
cmess1 << " - Using <" << net->getName() << "> as core (internal:vddi) power net." << endl;
|
||||
_vddi = net;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (name == _vsseName) {
|
||||
if (name == _vssePadNetName) {
|
||||
cmess1 << " - Using <" << net->getName() << "> as corona (external:vsse) ground net." << endl;
|
||||
_vsse = net;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (name == _vssiName) {
|
||||
if (name == _vssiPadNetName) {
|
||||
cmess1 << " - Using <" << net->getName() << "> as core (internal:vssi) ground net." << endl;
|
||||
_vssi = net;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (name == _ckiName) {
|
||||
if (name == _ckiPadNetName) {
|
||||
cmess1 << " - Using <" << net->getName() << "> as corona (external:cki) clock net." << endl;
|
||||
_cki = net;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (name == _ckoName) {
|
||||
if (name == _ckoPadNetName) {
|
||||
cmess1 << " - Using <" << net->getName() << "> as core (internal:cko) clock net." << endl;
|
||||
_cko = net;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (name == _ckName) {
|
||||
if (name == _ckPadNetName) {
|
||||
cmess1 << " - Using <" << net->getName() << "> as external chip clock net." << endl;
|
||||
_ck = net;
|
||||
return true;
|
||||
|
@ -345,15 +347,17 @@ namespace {
|
|||
|
||||
Net* GlobalNetTable::getRootNet ( const Net* net, Path path ) const
|
||||
{
|
||||
ltrace(300) << "getRootNet:" << path << ":" << net << endl;
|
||||
ltrace(300) << " getRootNet:" << path << ":" << net << endl;
|
||||
if (net == _blockage) return _blockage;
|
||||
|
||||
if (net->getName() == _vddeName) return _vdde;
|
||||
if (net->getName() == _vsseName) return _vsse;
|
||||
if (net->getName() == _vdde->getName()) return _vdde;
|
||||
if (net->getName() == _vsse->getName()) return _vsse;
|
||||
|
||||
if (net->getType() == Net::Type::POWER ) return _vddi;
|
||||
if (net->getType() == Net::Type::GROUND) return _vssi;
|
||||
if (net->getType() != Net::Type::CLOCK ) return NULL;
|
||||
if (net->getType() != Net::Type::CLOCK ) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const Net* upNet = net;
|
||||
|
||||
|
@ -377,9 +381,12 @@ namespace {
|
|||
}
|
||||
}
|
||||
|
||||
if (upNet->getName() == _ckName ) return _ck;
|
||||
if (upNet->getName() == _ckiName) return _cki;
|
||||
if (upNet->getName() == _ckoName) return _cko;
|
||||
ltrace(300) << " Check againts top clocks ck:" << _ck->getName()
|
||||
<< " cki:" << _cki->getName() << " cko:" << _cko->getName() << endl;
|
||||
|
||||
if (upNet->getName() == _ck->getName() ) return _ck;
|
||||
if (upNet->getName() == _cki->getName()) return _cki;
|
||||
if (upNet->getName() == _cko->getName()) return _cko;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@ -1073,7 +1080,10 @@ namespace {
|
|||
rootNet = _powerRailsPlanes.getRootNet(component->getNet(),getPath());
|
||||
else
|
||||
rootNet = _kite->getBlockageNet();
|
||||
if ( rootNet == NULL ) return;
|
||||
if ( rootNet == NULL ) {
|
||||
ltrace(300) << " rootNet is NULL, not taken into account." << endl;
|
||||
return;
|
||||
}
|
||||
|
||||
ltrace(300) << " rootNet " << rootNet << " (" << rootNet->isClock() << ") "
|
||||
<< go->getCell() << " (" << go->getCell()->isTerminal() << ")" << endl;
|
||||
|
|
|
@ -26,13 +26,13 @@
|
|||
#include "hurricane/Vertical.h"
|
||||
#include "hurricane/RoutingPad.h"
|
||||
#include "hurricane/NetExternalComponents.h"
|
||||
#include "hurricane/NetRoutingProperty.h"
|
||||
#include "hurricane/DeepNet.h"
|
||||
#include "hurricane/Instance.h"
|
||||
#include "hurricane/Plug.h"
|
||||
#include "hurricane/Path.h"
|
||||
#include "hurricane/Query.h"
|
||||
#include "crlcore/AllianceFramework.h"
|
||||
#include "katabatic/NetRoutingProperty.h"
|
||||
#include "katabatic/AutoContact.h"
|
||||
#include "kite/RoutingPlane.h"
|
||||
#include "kite/TrackFixedSegment.h"
|
||||
|
@ -63,6 +63,8 @@ namespace Kite {
|
|||
using Hurricane::Vertical;
|
||||
using Hurricane::RoutingPad;
|
||||
using Hurricane::NetExternalComponents;
|
||||
using Hurricane::NetRoutingExtension;
|
||||
using Hurricane::NetRoutingState;
|
||||
using Hurricane::DeepNet;
|
||||
using Hurricane::Instance;
|
||||
using Hurricane::Plug;
|
||||
|
@ -78,8 +80,6 @@ namespace Kite {
|
|||
using Hurricane::DataBase;
|
||||
using CRL::AllianceFramework;
|
||||
using Hurricane::ForEachIterator;
|
||||
using Katabatic::NetRoutingExtension;
|
||||
using Katabatic::NetRoutingState;
|
||||
using Katabatic::AutoContact;
|
||||
using Katabatic::AutoSegment;
|
||||
using Katabatic::ChipTools;
|
||||
|
|
|
@ -26,8 +26,8 @@
|
|||
#include "hurricane/Occurrence.h"
|
||||
#include "hurricane/Cell.h"
|
||||
#include "hurricane/NetExternalComponents.h"
|
||||
#include "hurricane/NetRoutingProperty.h"
|
||||
#include "crlcore/Catalog.h"
|
||||
#include "katabatic/NetRoutingProperty.h"
|
||||
#include "katabatic/AutoContact.h"
|
||||
#include "katabatic/AutoSegment.h"
|
||||
#include "katabatic/GCell.h"
|
||||
|
@ -60,6 +60,8 @@ namespace {
|
|||
using Hurricane::Occurrence;
|
||||
using Hurricane::Path;
|
||||
using Hurricane::NetExternalComponents;
|
||||
using Hurricane::NetRoutingExtension;
|
||||
using Hurricane::NetRoutingState;
|
||||
using CRL::CatalogExtension;
|
||||
using Katabatic::GCellGrid;
|
||||
using Katabatic::AutoContact;
|
||||
|
|
|
@ -177,8 +177,9 @@ namespace Kite {
|
|||
s += " " + getString(_dataState);
|
||||
s += "+" + getString(_ripupCount);
|
||||
s += ":" + getString((_dataState<<2)+_ripupCount);
|
||||
s += " " + string ( (_blockage )?"b":"-" );
|
||||
s += string ( (_blockage )?"f":"-" );
|
||||
s += " " + string ( (_infinite )?"I":"-" );
|
||||
s += string ( (_blockage )?"b":"-" );
|
||||
s += string ( (_fixed )?"f":"-" );
|
||||
s += string ( (_hardOverlap )?"h":"-" );
|
||||
s += string ( (_overlap )?"o":"-" );
|
||||
s += string ( (_overlapGlobal )?"g":"-" );
|
||||
|
|
|
@ -16,8 +16,9 @@
|
|||
|
||||
#include <climits>
|
||||
#include "hurricane/Warning.h"
|
||||
#include "hurricane/RoutingPad.h"
|
||||
#include "hurricane/Property.h"
|
||||
#include "hurricane/NetRoutingProperty.h"
|
||||
#include "hurricane/RoutingPad.h"
|
||||
#include "hurricane/Contact.h"
|
||||
#include "hurricane/Horizontal.h"
|
||||
#include "hurricane/Vertical.h"
|
||||
|
@ -49,6 +50,8 @@
|
|||
namespace Knik {
|
||||
|
||||
using Hurricane::Warning;
|
||||
using Hurricane::NetRoutingExtension;
|
||||
using Hurricane::NetRoutingState;
|
||||
using CRL::addMeasure;
|
||||
using CRL::RoutingGauge;
|
||||
using CRL::RoutingLayerGauge;
|
||||
|
@ -392,7 +395,8 @@ void KnikEngine::saveSolution ( const string& fileName )
|
|||
if ( net->isGlobal()
|
||||
or net->isSupply()
|
||||
or net->isClock()
|
||||
or (net->getName() == obstacleNetName) ) continue;
|
||||
or (net->getName() == obstacleNetName)
|
||||
or not NetRoutingExtension::isAutomaticGlobalRoute(*net) ) continue;
|
||||
all_nets.push_back(*net);
|
||||
}
|
||||
stable_sort ( all_nets.begin(), all_nets.end(), netId_sort );
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC 2008-2013, All Rights Reserved
|
||||
// Copyright (c) UPMC 2008-2014, All Rights Reserved
|
||||
//
|
||||
// +-----------------------------------------------------------------+
|
||||
// | C O R I O L I S |
|
||||
|
@ -21,6 +21,7 @@
|
|||
#include "hurricane/DataBase.h"
|
||||
#include "hurricane/Technology.h"
|
||||
#include "hurricane/Layer.h"
|
||||
#include "hurricane/NetRoutingProperty.h"
|
||||
#include "hurricane/Contact.h"
|
||||
#include "hurricane/Vertical.h"
|
||||
#include "hurricane/Horizontal.h"
|
||||
|
@ -29,6 +30,8 @@
|
|||
#include "hurricane/UpdateSession.h"
|
||||
#include "crlcore/Utilities.h"
|
||||
#include "crlcore/Measures.h"
|
||||
#include "crlcore/AllianceFramework.h"
|
||||
#include "crlcore/CellGauge.h"
|
||||
#include "knik/Configuration.h"
|
||||
#include "knik/Graph.h"
|
||||
#include "knik/KnikEngine.h"
|
||||
|
@ -44,6 +47,7 @@ namespace {
|
|||
using std::make_pair;
|
||||
|
||||
using CRL::IoFile;
|
||||
using CRL::AllianceFramework;
|
||||
|
||||
using Hurricane::ForEachIterator;
|
||||
using Hurricane::Error;
|
||||
|
@ -56,6 +60,8 @@ namespace {
|
|||
using Hurricane::Technology;
|
||||
using Hurricane::Layer;
|
||||
using Hurricane::Net;
|
||||
using Hurricane::NetRoutingExtension;
|
||||
using Hurricane::NetRoutingState;
|
||||
using Hurricane::Contact;
|
||||
using Hurricane::Segment;
|
||||
using Hurricane::Vertical;
|
||||
|
@ -284,11 +290,12 @@ namespace {
|
|||
void SolutionParser::load ()
|
||||
{
|
||||
UpdateSession::open();
|
||||
|
||||
|
||||
try {
|
||||
cmess1 << " o Loading solution: \"" << _fileName << "\"." << endl;
|
||||
|
||||
|
||||
DbU::Unit sliceHeight = AllianceFramework::get()->getCellGauge()->getSliceHeight();
|
||||
CRL::IoFile fileStream ( _fileName );
|
||||
fileStream.open( "r" );
|
||||
if (not fileStream.isOpen())
|
||||
|
@ -376,24 +383,26 @@ namespace {
|
|||
|
||||
Box rpBox;
|
||||
RoutingPad* previousRp = NULL;
|
||||
forEach ( RoutingPad*, rp, net->getRoutingPads() ) {
|
||||
rpBox.merge( rp->getBoundingBox() );
|
||||
Contact* gcontact = contactMap.findVertexContact( rp->getBoundingBox() );
|
||||
if (gcontact) {
|
||||
rp->getBodyHook()->attach( gcontact->getBodyHook() );
|
||||
} else {
|
||||
if (previousRp)
|
||||
rp->getBodyHook()->attach( previousRp->getBodyHook() );
|
||||
if (NetRoutingExtension::isAutomaticGlobalRoute(net)) {
|
||||
forEach ( RoutingPad*, rp, net->getRoutingPads() ) {
|
||||
rpBox.merge( rp->getBoundingBox() );
|
||||
Contact* gcontact = contactMap.findVertexContact( rp->getBoundingBox() );
|
||||
if (gcontact) {
|
||||
rp->getBodyHook()->attach( gcontact->getBodyHook() );
|
||||
} else {
|
||||
if (previousRp)
|
||||
rp->getBodyHook()->attach( previousRp->getBodyHook() );
|
||||
}
|
||||
previousRp = *rp;
|
||||
++nbRoutingPad;
|
||||
//cerr << rp->_getString() << " should be attached to " << gcontact << endl;
|
||||
}
|
||||
previousRp = *rp;
|
||||
++nbRoutingPad;
|
||||
//cerr << rp->_getString() << " should be attached to " << gcontact << endl;
|
||||
}
|
||||
|
||||
if ( (nbRoutingPad > 1)
|
||||
if ( (nbRoutingPad > 1)
|
||||
and (not contactMap.size())
|
||||
and ( (rpBox.getHeight() > DbU::fromLambda(50.0))
|
||||
or (rpBox.getWidth () > DbU::fromLambda(50.0)) ) ) {
|
||||
and ( (rpBox.getHeight() > sliceHeight)
|
||||
or (rpBox.getWidth () > sliceHeight) ) ) {
|
||||
++missingGlobalRouting;
|
||||
cerr << Warning( "Net <%s> is missing global routing."
|
||||
, getString(net->getName()).c_str() ) << endl;
|
||||
|
|
Loading…
Reference in New Issue