Work

I have 3 years of work experience. I worked Xilinx as an Intern and as a Software Engineer in IBM. Here are the list of various projects in Xilinx, IBM and in school.

Work @ Xilinx
Work @ IBM
Work @ School

Projects in Xilinx

Embedded Development Kit (EDK)
Xilinx Emerging Techonlogies Group, San Jose, CA, 5/2002 - 12/2002

The group is primarily responsible for developing Embedded Development Kit (EDK), used to design embedded systems on Xilinx FPGAs. EDK supports both IBM PowerPC hardware processor and Microblaze soft processor core. My work was based on Xilinx Microblaze soft processor core. I worked on the following areas:

Developed Xilinx Microkernel (XMK) librariee for EDK
To develop multi-tasking and multi-processing applications for embedded systems, a user would require standard programming interfaces and features for faster software development. These features are provided by Operating System (OS). But most of the standard OS are big and not customizable for the applications on Microblaze. So the kernel library, XMK was developed.

The kernel has the following features:
• Multi-processing support.
• Multi-threading support.
• Supports scheduling like Round Robin and Priority-preemptive.
• Interrupt processing.
• Semaphores.
• Message Queues.
• Dynamic Buffer Management.
• Timer routines.

It was very important to customize the kernel for the application. And also the code size of the kernel had to be small as it should not take considerable part of the application. An interactive shell and web server was implemented as applications using OS.

Developed Profiling tools for ProWare Co-design tool.
The profiling tool enables a user to do hardware/software co-designing. The profiling information generated isin gmon.out format, which can be analyzed by mb-gprof. The profiling provides flat profiling (histogram) and call graph information. The script and options for user can be set using proWare tool and the flow run under EDK framework.

There are two types of profiling:
1. Profiling software running on hardware.
2. Profiling software running on modelsim simulator. (Also works with other simulators)

Designed Microprocessor Library Specification (MLD) for EDK libraries.
The specification provides an easy way to describe parameters of interest in a library/driver, which user can configure from either a GUI or text flow.

[Related Links]

Projects in IBM

Hmmm.. I worked in IBM for 2 years. I still remember the first day, 9th August 1999, in Pune when I first joined IBM along with lot other folks. I have mixed feelings working in IBM. Did some good work and also lazied around having fun, have good and bad(nightmare) memories at IBM, met a lot of people, made some good friends(fortunately I did not make any enemies :-)). Had fun in Pune, Bangalore and at Raleigh, USA. For personnal memoirs...

At IBM I was with the Networking Software group, IBM Software labs, Bangalore, India. And then I also worked for the Network Processor Software group, IBM Microelectronics Division, Raleigh, USA. Some of the projects that I worked at IBM, in chronological order:


Network Processor Software Group,
IBM Microelectronics Division, RTP, Raleigh, NC - 2/2001-7/2001

At the Network Processor(NP) group, I was working on IBMs NP4GS3 and a brief work on NP10GS1. I was in the software group, was responsible for developing user APIs for the Network Processor Management Services(NPMS). NPMS is a control point component and provides an interface for booting, initializing, configuring the NP and various components. It also provides API for managing and monitoring the NP. I worked with Rick Blaisiak, and was invloved in the design and development of some of the APIs. I also worked on Control Access Bus (CAB) module to support multiple NPs, provide ethernet interface to the NP reference board and loading boot code to the NP. The work involved understanding the NP architecture components(Embedded Processor Complex, NP dataflow, NP Scheduler), NP booting sequence, general fundas and ofcourse hardware glitches and how to overcome them in software :-) It was a great learning experience and ofcourse my first work in US, so was fun.

[Related Links]


Networking Software Group,
IBM Software Labs, Bangalore, India - 8/1999-2/2001

Development of Bluetooth wireless stack for QNX Neutrino RTP.
Bluetooth represents a wireless communication protocol, which is envisioned to be used for Personal Area Networks and ad hoc networks. The Bluetooth stack on QNX represents an ideal working environment for future intelligent embedded devices. The Bluetooth stack developed was based on the specification Ver 1.0b. An application was written and the stack was tested using a Ericson development kit.

[Related Links]

Development and support of Nways SNMP manager and Nways Performance Manager Tool.
Nways are IBM range of routers, switches, bridges and hubs. Nways Manager is an SNMP manager that can be used to configure, deploy and monitor the performance of these devices. Nways Manager supports a wide range of IBM routers and switches,8265 IBM ATM Campus switch, 2210 IBM Multiprotocol Router,etc. The project involved development, support and enhancement related to any IBM Nways customer problems. I worked on problem that dealt with the interaction between Nways SNMP Manager and Netview another IBM product. Enhancement were done in Nways code and also further enhancement suggested to Netview to solve the customer’s problem. I also worked on the enhancement of Java performance monitor, one of the software modules of Nways Manager.

[Related Links]


Global Application Delivery Group,
IBM India, Bangalore, India.

DART - Data Analysis and Reporting Tool for Lotus Domino database.
The reporting tool for the On-Track Lotus Notes Tool aims at the user being able to generate easy, customized reports and generate graphs, charts, etc. This tool helps in project management. The database was a Lotus Nots database, designed for the On-Track Tool. The tool communicates with the Notes database through a Domino Java DataBase Connectivity (JDBC) Driver. The GUI was designed using Swing 1.1.1. The GUI insulates all the database details from the user and makes it user friendly. The GUI was designed on the Model-View-Controller (MVC) architecture. The tool also communicates with the MS Excel (for graphs, charts,etc) application through Dynamic Data Exchange (DDE).

[Related Links]


Other significant projects in School

Graduate Projects
Remote truck controller using Atmel Atmega103
Embedded System Design course
North Carolina State University, Raleigh, NC, 1/2002-5/2002
• Designed a controller with drive-by-wire joystick, automatic obstacle localization, collision avoidance/seeking ultrasonic sonar features

[Related Docs]

Thread library and kernel programming
Operating Systems course
North Carolina State University, Raleigh, NC, 1/2002-5/2002
• Implemented user-level thread library and synchronization routines on Solaris and file snapshot facility using copy-on-write for Linux kernel

Decaf compiler
Compiler Design course

North Carolina State University, Raleigh, NC, 1/2002-5/2002
Decaf is a subset of Java language. Jasmin is an assembler, that generates Java Class files, given a .j file. The decaf compiler generates a jasmin file given a decaf program input. The jasmin file can be compiled using jasmin, when can be then run on Java.

[Related Docs]

USERS – User Specified Efficient Reliable Service.
Internet Protocol course work.
North Carolina State University, Raleigh, NC - 8/2001-12/2001
The main objective of the project was to develop a user-specific Simple Reliable Transport Service(SRTP) over UDP. There are two main reasons why one would want a separate transport layer, instead of using reliable TCP transport layer.
• TCP provides reliable transport, but there are some applications that do not require the complexity of TCP. TCP is not flexible. So applications, which require simple reliability, use UDP and have their own reliability service. Such applications would benefit, if they can select the reliable service they require of the transport layer.
• For some applications like wireless networks, TCP is not the ideal medium of transport. TCP performs badly in wireless networks, because of the way it handles congestion in the networks. Such applications should be able to implement their custom algorithm to get the best out of the transport layer.
Our SRTP was designed to provide the user, option to select reliability services, capability to implement their own algorithms and with scalability in mind.

[Related Docs]

Undergraduate Projects

Simulator, Assembler and Compiler for Intel 8086 processor.
System Software and Compiler Design course work
College of Engineering Guindy, Anna University, Chennai, India - 7/1997-6/1998
As part of the Systems Software course, a simulator for the 8086 subsystem was developed. A sub-set of the Instruction Set was taken and a simulator was implemented. An assembler for the 8086 simulator was developed. The assembler developed was a two-pass assembler, supporting linking and capable of loading relocatable code to the system. The assembler though simple, helped in better understanding of assembly programming, improving programming technique and familiarity with various data structures and algorithms.
As part of the compiler Design course, a compiler for the subset of the 'c' compiler was developed. The compiler generated an assembly language code, which was assembled by the assembler developed for the 8086 simulator. This work helped in understanding different stages of compiler writing, starting from syntax analysis, semantic analysis, intermediate code generation and code generation.

[Related Links]