Software Engineer Resume
San Jose, CA
OBJECTIVE:
- Hardware and software validation and verification. Board bring - up and testing. Write and maintain firmware and logic. Program TCL, BASH, other scripting languages, C/C++, assembly Verilog/SystemVerilog. Support design, test and manufacturing groups.
TECHNICAL SKILLS:
Technology and Tools: C/C++, TCL, Bash, Verilog/SystemVerilog, Xilinx ISE/ISIM, VCS, Assembly languages, ASIC Validation and hardware bring-up, Embedded Firmware, Openboot, VxWorks, Linux.
WORK EXPERIENCE:
Software Engineer
Confidential, San Jose, CA
Responsibilities:
- Wrote C++ code to process a capture file for an IOTracer Utility.
- Setup Clonezilla on a USB Flash Drive to configure or restore Fedora Linux and hard drive partitions on Dell Servers.
- Setup a variety of VMWare virtual Windows and Linux systems.
Manufacturing Test Engineer
Confidential, San Jose, CA
Responsibilities:
- Created diagnostic test scripts for Confidential 's IP Ethernet Broadband line cards. Wrote ProComm Aspect Scripts for functional test.
- Supported TCL test scripts running under Linux on SE100 test fixture.
- Tested on-board data links between PPA2 chips, DIM FPGA, Back plane and front networks ports. Ran data with boards in feedback modes and also used external feedback cables and passed data between line cards out front ports and through the back plane. Continually updated, tested and identified issues with new board FPGA and VxWorks images and brought issues to respective teams.
- Used lab tools to identify problems such as failed DC-DC converter, damaged components, bad memory, BGA connection problems.
- Supported and visited contract manufacturers such as Plexus in Fremont and Jabil Circuits in San Jose and Guadalajara Mexico to train technicians with tests on new line cards and to help with board debug.
- Maintained and updated test fixtures online at remote contract manufacturers.
- Developed technical documents for engineering review meetings.
- Updated agile database with line card test scripts and FPGA and VXWorks images.
ASIC Validation
Confidential, Santa Clara, CA
Responsibilities:
- ASIC Validation. Wrote validation code in C, TCL, and custom microcode for the fourth-generation of a hardware EDA accelerator.
- Loaded up the system by setting memories and configuring many muxes. System consisted of one or more boards with each board having 8 copies of our custom ASIC.
- Ran payloads through the data paths, and checked results. Found and documented numerous errors involving manufacturing flaws, timing problems, reset problems, and Xilinx FPGA rocket I/O link problems.
- Developed many tests for manufacturing and lab use, as well as some diagnostics for running test clusters. Went through the ASIC's Verilog and talked to the system architect to see how to test the system.
- Wrote microcode for the custom CPU for running many millions of cycles and calculated or wrote C code to calculate expected results. My work contributed to the eventual successful bring-up of the system.
- Confidential wasn't getting enough POs so had to merge with Eveteam.com.
C Programmer
Confidential, Mountain View, CA
Responsibilities:
- Brief Engineering task. On Winkler Project - a precision gamma ray detector that was being refurbished at NASA Ames. Read old 8085a firmware with my EETools EEPROM programmer.
- Found an 8085 disassembler written in old style C with original type of function parameter declarations. Modified it to run under Linux and disassembled the original 8085 image.
Firmware Engineer
Confidential, Sunnyvale, CA
Responsibilities:
- Wrote embedded C code running under VxWorks for a 9 disk fibre channel storage array.
- Performed many embedded software tasks as part of the development of the RAID storage array. Wrote firmware for the cache-board that ran on the MIPs core of an enclosure management chip (Vitesse VSC120). Configured various ports and pins, including FC-AL, I2C/SMBus, GPIO, interrupt and serial ports,
- Used I2C chips and the VSC7147 to run hardware fibre channel device bypass tests. Upgraded
- Upgraded the I2C driver on the controller boards when I encountered an infinite retry bug.
- Wrote code to validate the fibre-channel loop (by issuing LIP's) and communicate the state from the cache board to the controller.
- Programmed the FPGA. Optimized the code for speed. Wrote a wrapper to compress the code so that two FPGA image copies could be stored.
- Found hardware bugs involving the board configuration and connections.
Firmware Engineer
Confidential, Newark, CA
Responsibilities:
- Software debug for Sun's T3 mid-range storage array which was modified from a similar Maxstrat storage array. Changed the build system to cross-compile the PowerPC code with gcc because it was better at detecting bugs than the PSOS compiler. Warnings from gcc identified many errors such as macros with wrong number of parameters or uninitialized pointers which I reported to Maxstrat engineers so they were corrected.
- On a new project worked with openboot F-code, a version of Forth, firmware on a low-end storage array being developed. The array used a Sun motherboard and a custom board with a PCI bridge and PCI to IDE chips along with IDE drives. Wrote functions to probe the I2C and PCI buses. Developed a diagnostic program in openboot to probe the custom hardware. Wrote a menu to call this program.
- Discovered existing bugs in Openboot involving the I2C and PCI Bridge drivers. Used cscope and scripts to trace through the Openboot code to find bugs.
Firmware Engineer
Confidential, Fremont, CA
Responsibilities:
- Performed logic-design and firmware in C tasks as part of the product development. Worked with verilog and firmware on a project reverse engineering Matsushita's DVD player chipset. On that project a board with several Altera FPGA's was wired to a DVD player. It was setup so it could be selected which Matsushita chips could be bypassed by our logic in FPGAs.
- Modified the player's firmware which was running in an ICE emulating it's Fujitsu micro controller. My changes enabled the state of the machine to be monitored by using its remote control and on screen display (OSD). With the remote several different components could be selected to be monitored.
- The MPEG chip had several error counting registers which were important to monitor. I found many errors such as problems passing data between two clocks and problems at some DVD format block numbers. When there were problems playing audio CD's I went through the source verilog and found that head and tail pointers of the input buffer could pass each other and even flip left and right audio channels.
- Before I was with Cyclonics they made a chip which was for the DVD player remote control which listened for an audio search pattern and played the "Shave and a hair cut two bits" jingle when detected. The audio detection hardware was a 1-bit ADC connected to a microphone. Their design had a very poor algorithm which couldn't tell signal from noise and worked poorly. I had to redesign the algorithm and test it by writing a C program on a Sun Ultra which ran with captured data from using an HP logic analyzer on the previous bad chip.
- I wrote all the Verilog for the next chip and tested it in an Altera FPGA. I used Synopsys dc shell and Galileo to compile the Verilog for the Altera chips. The key to my design was it could discriminate between signal and noise and quantified how much of the detected transitions were signal. My design simulated a tuning fork with and 8-bit counter and it got nudged slightly when the detected level was not the expected level so it could get in phase with the detected signal. The original algorithm only counted the number of transitions to identify the tone so didn't distinguish signal from noise. Our partners in Japan also tested my design and liked it.
- That was a very fun job and I would like to work with Verilog, SystemVerilog, and help design or debug logic again.
Summer Internship
Confidential, Palo Alto, CA
Responsibilities:
- Wrote a CGI program which would call some network monitoring tools. Made a web page where tools and times could be selected to monitor network traffic. Data from the tools were written to files and graphed by gnuplot onto web pages.
- Also we had a-lot of lunch time soccer games and I played enough games to be ed the rare and coveted Confidential Jalapenos T-Shirt.
C Programmer
Confidential, Palo Alto, CA
Responsibilities:
- Wrote some passes of a C-like compiler for a language.
- A satellite was being designed to monitor the composition of the Earth's atmosphere at various altitudes. Software in this Satellite would run in a C-like language called Sail. I wrote some passes for that compiler using Borland Turbo C++ before returning to UCSC.
- Attended a meeting in Oxford, England and then spent a few days in London and visited Paris for a day.
Firmware Engineer
Confidential, Newark, CA
Responsibilities:
- Worked one summer at Confidential on the Sparc project. After being hired my manager wouldn't show me any of the design files or anything at all. For 3 months all my questions and requests were answered with “don't worry”. I accepted that job instead of going to the University of Hawaii to study Electronic Engineering and continue with Japanese then there was no job and no answers.
Calibration Technician
Confidential, Los Altos Hills, CA
Responsibilities:
- Calibrated and assembled strain gauges in devices for industrial and medical applications.
English Tutor
Confidential
Responsibilities:
- One month job in Osaka, Japan as an English tutor and then spent two weeks in Toyama where I was on the morning news wearing Samurai Armor.
Space and Biology Intern
Confidential
Responsibilities:
- Programmed FORTRAN mainly on a VAX 11/780 for a few researchers. The Vax replaced a PDP shortly after I started there and Terak machines used as terminals were replaced by PC's. Wrote fortran code to process some data from a Bomen spectrograph and used a graphics package called Mongo to plot it.
- Also ran some computing jobs on a Cray computer.
- Of course got to do vital gopher duties and retrieve and copy journal articles from NASA Ames library.
