For my last summer internship in 2019, I returned to Rockwell Collins. Except, it's not Rockwell Collins anymore. With the recent acquisition of Rockwell Collins by United Technologies (UTC), Rockwell Collins is now Collins Aerospace, a United Technologies company. For this internship, I worked on a hardware team to explore my second major, computer Engineering. I worked on a much older team than the previous year, and worked on an in-house software application that allowed for quicker scripting of commonly used documentation.
REMAP Tool Initial GUI
In this internship, I worked for an FPGA Team in the Heads Down Displays department. The team was working on developing a new FPGA board for a display. With FPGA Development comes writing HDL files to describe the hardware (especially for simulations), and having the software team write C++ files to actually program the board. In addition, when developing new FPGA boards, teams need to write documentation for them. All of these tasks can be tedious and repetitive. For example, when writing several software header files, a developer may need to define a certain address over and over again - the same goes for HDL files.
The solution was what I worked on during this three month stretch: the REMAP Tool. Using the already developed Reference Manual Documentation for the new FPGA board, my task was to create a user-friendly GUI for developers to use where they could insert, delete, and modify blocks of registers, and then simply click a button that would generate software header files, HDL files, and reference manual-style documentation for them through a script.
When I received the initial version of the tool, worked on by one of my team members, it had very little functionality. The GUI was put together well, but the System it represented could only handle one block of registers at a time. A lot of the expected functionality was there - for example, buttons that could undo and redo actions - but when they were clicked, nothing would happen. Though I didn't start from scratch, below is a list of changes I made and features I added to make life easier on the FPGA developers on my team.
Organizational Hierarchy
The initial version of the tool consisted of one System that contained one Block, which could be made up of one or more Registers. Each Register had up to 32 Fields, and each Field could have multiple Values. For the most part, this structure is the same; however, upon further inspection of the new FPGA design, it was clear that another modular element needed to be added. so, Sub-Blocks were added, as smaller pieces that were exactly like Blocks, but could contribute to the makeup of a Block. This hierarchy can be seen in the figure to the right.
File Generation Scripts
The main purpose of the REMAP Tool was to generate various files to make programming the board easier. As such, users of the tool are now able to generate C++ software header files for individual Blocks or a full System; Verilog files for individual Blocks; and reference manual-style HTML Documentation for individual Blocks or a full System.
Module Editing
Users can now edit System Attributes.
Registers can be marked to be parity checked, affecting only the Verilog file generation.
If users make changes to a module and exits without clicking 'Save,' they are prompted to save their changes before making the final decision to exit.
If users try to edit a module to have a duplicate symbolic name or address as another module in the System, they are prompted to not reuse the value.
Users can now make copies of Registers and Sub-Blocks.
GUI Functions/Features
The 'Edit' tab on the menu bar offers a completed undo/redo feature.
The 'Verify' tab on the menu bar double-checks the System for duplicate symbolic names and addresses (in case individual modules checks were unsuccessful).
Users can now use the 'File -> Save' tab to save individual Registers, Sub-Blocks, and Blocks along with the full System.
User Guide
Along with additional features and structural changes to the software (including abstracting out the Modules as described above), I wrote all of the documentation for the REMAP Tool as it began to come together. The guide is included to the right, and contains more in-depth information about how the REMAP Tool can be used.
REMAP Organizational Hierarchy