Navigate to the directory where you want to keep the GUI code in terminal, then run:
pip install pyqt5 asyncpg numpy pandas
git clone https://github.com/nkalliney1/wirebonder_gui.git](https://github.com/cmu-hgc-mac/wirebonder_gui.git
Go into conn.py and edit your institution_name
and inst_code
to your respective institution. Change host
to the static IP address of your database computer. Run the code and edit the graphics configuration file.
In graphics_config.py, you can edit the font size of the buttons and other text, as well as the window size to make it fit your computer. If the top of the hexaboard is cut off for the LD full frontside, increase add_y_offset
. If the left side of the hexaboard overlaps with the labels for the HD full frontside, increase add_x_offset
. Setting it to 40 is a good start.
When the code is run, it will open on the homepage.
Select the module name prefix from the dropdown. The dropdown will only display the module types produced by your MAC.
Enter the last four digits of the module name. Click the "load front" or "load back" buttons to show the module's front or back side, respectively.
If you enter the name of a module that doesn't exist yet in the hexaboard or wirebonding tables of the database, you can add it as a blank module to the database (to the module info and wirebonding tables):
Only add modules when strictly necessary! This feature should almost never be used when the workflow is implemented correctly.
Click the encapsulation button to load the encapsulation page.
The front page displays a list of all modules that exist in the both wirebonding tables in the database that have not been marked as complete. "fr" indicates the frontside is incomplete and "bk" indicates the backside is also incomplete.
Every time you go back to the home page from the encapsulation, front, or back page, the information of that page is automatically saved, except for a few exceptions mentioned below.
The front page consists of a schematic representation of the board type you have selected, with buttons and text entry on the sidebars.
Scrolling to the right reveals a few other buttons:
The schematic representation of the board is composed of hexagons representing each cell, with a button at the corner that corresponds to the location of the wirebonds for that cell. Calibration channels are small circles in the same position they appear on the board. The schematic also represents the mousebites and shield ring bonds as small circles around the edge, in approximately the positions they appear on the board. The button for each cell holds information about the state of the wirebonds of each cell. Left-clicking the cell will cycle it between three states: blue, or 3/3 successful wirebonds; yellow, or 2/3 successful wirebonds; orange, or 1/3 successful wirebonds; or red, unbonded. Right-clicking the cell will cycle it between three states as well: no outline, a signal channel; a black outline, a cell that needs to be grounded; or filled black, a cell that has been grounded.
The right side holds a tally of all states on the board and a key for reading the graphic:
Information about wirebonding and pull testing (if conducted) may be entered on the textboxes on the right. Note that all pull testing information must be entered separately from wirebonding information, and is not automatically saved for both. The pull testing information will not be saved if the technician's CERN ID is left blank.
The date and time fields are autofilled with the time the page was opened, though this may be changed. The wedge ID and spool batch are also autofilled with the corresponding entries from the last module entered in the database, if the fields are not empty.
The "reset to last saved version" resets all buttons (not text fields) to the last saved version in the database, which does erase any changed made since this particular board was last saved. The "set to nominal" button sets all buttons to 3 successful bonds and signal channels, similarly erasing any changes made since the board was last saved. The "Help" link directs the user to this ReadMe.
When wirebonding the board has been completed, the user should check the corresponding box, which will remove it from the front page list:
The back page is very similar. It displays a shadow of the frontside as well as the two backside modules holes for orientation, and lacks entries for pull testing. Similarly, when wirebonding has been completed, the user should check the corresponding box.
On the encapsulation page, you can add modules to a list by selecting the module name prefix, typing in the number, selecting front or backside encapsulation, and clicking "add." Similarly, a module can be removed from the list if it's already there by clicking "remove."
Information about encapsulation may be entered in the fields to the right; this information will not be saved if any of Cure Start, Cure End, or Encapsulation Time is left empty! The "now" buttons next to the date and time fields will set the date and time to the current time.
The epoxy batch is autofilled from the information of the previous module's, provided it is not empty.
Clicking "save" will upload that information into the database for every module in the list.