Rico – Hardware/Firmware Engineer
- Writes/debugs Python based firmware test programs for a new device, including battery.
- Implements both C and Python elliptical curve cryptographic routines and test bench for digital signatures to validate battery packs.
- Responsible for the ROM contents on Veridian. Additionally, responsible for the new Flash programming and erase routines for the customer. Develops random test bench to exercise the Flash memory.
- Wrote a python emulator of the Veridian device. The ARM cortex M0+ core was modelled along with RAM, ROM, FLASH, UART and other blocks. The emulator reads the ELF file containing the binary code compiled by the Keil tools and provides a near clock accurate execution model of that code running on Veridian. This enables the Veridian ROM image to be debugged in advance of Silicon.
- Developed a flash emulation on a FPGA. Through a ROM based C program, emulates the Flash API library to allow the Veridian customer to develop their firmware on a FPGA with confidence that it will function on the silicon when it is finished.
- Developed a Verilog AMS generator to interface the digital and analog portions of Veridian together. This enabled the design team to simulate concurrently the digital and analog design databases.
- Developed a Verilog generator that instantiates the level shifters between the different power domains on Veridian. The Python programs reads an Excel spreadsheet to get a template and then generates a Verilog netlist as per that template.
- MSEE, Purdue University