kppc.drc.cleanermaster module

Wrapper Class for CleanerMaster.cpp

This Class creates a managed shared memory space. Polygon data for cleaning are streamed into this memory space. A slave process (cleanermain, which is a little loop for CleanerSlave.cpp).

Python Class

class PyCleanerMaster
add_edge(self, x1 : int, x2 : int, y1 : int, y2 : int)

Add an edge to the cleaner.

Parameters
  • x1 – first x coordinate

  • x2 – second x coordinate

  • y1 – first y coordinate

  • y2 – second y coordinate

done(self)

Indicates whether there is data still in the buffer from the last read or not.

Returns

false if the buffer is empty and the data has been read by the slave.

Return type

bool

get_layer(self)

Read the next processed layer in the memory space and returns it in per line style (x coordinates per line (y coordinate)). This is considerably slower than returning the polygons.

polygons(self)

Reads the next processed layer in the memory and assembles the line style to polygons.

set_box(self, layer : int, datatype : int, violation_width : int, violation_space : int, x1 : int, x2 : int, y1 : int, y2 : int)

Allocate enough space in the shared memory to stream the cell and its polygons in.

Parameters
  • layer – layer number

  • datatype – datatype number

  • viospace (minimum space violation in database units) – minimum space violation in database units

  • viowidth (minimum width violation in database units) – minimum width violation in database units

  • x1 – left bound of box

  • x2 – right bound of box

  • y1 – bottom bound of box

  • y2 – top bound of box

C++ Class

class CleanerMaster
CleanerMaster(int nlayers)

Creates the shared memory space and resizes the vectors for nlayers

void set_box(int layer, int datatype, int violation_width, int violation_space, int x1, int x2, int y1, int y2)

Allocate enough space in the shared memory to stream the cell and its polygons in.

void add_edge(int x1, int x2, int y1, int y2)

Add an edge to the cleaner.

bool done()

Indicates whether there is data still in the buffer from the last read or not.

std::vector<std::vector<int>> get_layer()

Read the next processed layer in the memory space and returns it in per line style (x coordinates per line (y coordinate)).

std::vector<std::vector<std::pair<int, int>>> get_polygons()

Reads the next processed layer in the memory and assembles the line style to polygons.

C++ Source Code: CleanerMaster Source