this is the first step to allow engineers, porting technologies, more room
for routing their handmade cells.
For now, we don't allow the specification of power_grids where the lower layer
prefers to be routed vertically. This is due to the router not
connecting some pins properly in that case.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
this allows us to simplify add_power_pin() and gives a clean
API to create vias through multiple layers.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
the hash value only depends of the properties 'rect' and 'layer' so we
only compute the hash if those values are changed. Otherwise we just
return the precomputed value. This gives us a major speedup (~10x) if
the hash is used as a key in a dict.
During the grouping of pins in analyze_pins() this gives the best
improvements. For example for FreePDK45 with num_bits=8, num_words=256
Improved
**** Analyzing pins: 20.9 seconds
** Routing: 293.8 seconds
** SRAM creation: 349.8 seconds
Non-improved
**** Analyzing pins: 267.9 seconds
** Routing: 537.5 seconds
** SRAM creation: 592.9 seconds
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
only rect and layer are used to compute the hash for a pin. Having
those as properties allows us to cache the hash value and only update it
if either rect or layer are written.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
Convert metalN to mN.
Generalize helper constants in modules for
space, width, enclose, etc.
Use layer stacks whever possible.
Try to remove drc() calls in liu of helper constants.
Create active and poly contact types.
Define standard cell boundary option.
DataType and PurposeLayer are the same. Text must have type 0.
Remove vector from vlsiLayout. More debug in reader.