Structures and Flow

This section contains a description of the different structures used to store the information inside the program, as well as a description of the algorithmic flow from start to finish.

Structures

There are a few different data structures used throughout the program. Here we list them and give the layout and an example of use:

BoardItem

Defined in lib\selection_areas, this is a class containing all the fields we need to define a selectable item on any component.

class BoardItem:
def __init__(self, name, description, signal, direction, pad_type, coords, comments):
    self.name = name
    self.description = description
    self.signal = signal
    self.direction = direction
    self.pad_type = pad_type
    self.coords = coords
    self.comments = comments

We store all information about each of the components and generate the item. These BoardItems are then stored in component dictionaries:

ASIC = {
'BP1': BoardItem('XOFFRB', 'Data signal (bidirectional)', '160', 'I/O', 'SLVS',
                 [(1689.1, 1363.9), (1703.9, 1363.9), (1703.9, 1397.5), (1689.1, 1397.5)], ''),

'BP2': BoardItem('XOFFR', 'Data signal (bidirectional)', '160', 'I/O', 'SLVS',
                 [(1653.4, 1363.9), (1668.2, 1363.9), (1668.2, 1397.5), (1653.4, 1397.5)], '')
}

where the index of each BoardItem is defined by the user. In this case, BP stands for bond pad.

cur_location

Defined in lib\issue_tracking_gui, this is a str which gives us the current location of the user in the component tree. It is built by appending all levels of the tree which lead to the current selected entry. For example, if the user is currently at the HCC on the RH hybrid of a barrel module:

self.cur_location = 'BarrelRHHCC'

cur_selected

Defined in lib\issue_tracking_gui, this stores all the currently selected areas across all modules. The are stored in nested dictionaries, with the key for the first level being the cur_location string, and the content being a dict. The structure of the second dict is a key for the name of the area selected (i.e. ‘BP1’ or ‘Custom1’) and the content the BoardItem representing that area.

self.cur_selected = {'BarrelRHHCC': {'BP1': BoardItem('XOFFRB', 'Data signal (bidirectional)', '160', 'I/O', 'SLVS',
                 [(1689.1, 1363.9), (1703.9, 1363.9), (1703.9, 1397.5), (1689.1, 1397.5)], '')}}

Flow

This shows an example of the basic data flow of the program.

_images/flow.png