GauravDwivedi (12 0)
GauravDwivedi (12 0)
Phone : +91-9910930194
Email: [email protected]
Gaurav Dwivedi
Career Objective
To apply my embedded software skills and be a strong contributor to software and hardware design and
development processes, continuously enhance my knowledge with upcoming technologies, while performing
leadership roles.
Experience Summary
▪ 13 years of experience in Software Development handling various roles and responsibilities. Primarily
working on Device Driver Development both on Windows and Linux Platform for more than 11 years.
▪ Presently working as Chief Technology Officer of a Noida based Startup, Karmatics Private Limited.
▪ Worked with AP Solution Lab, Senior Engineer R&D, Samsung ,Suwon as Senior System Engineer
(Android - Power)
▪ Experience in developing and programming GPU clocks from the scratch, working closely with HW.
▪ Worked in NVIDIA as Clock Component SW Lead (across the globe) as my last held position .
▪ Self starter, excellent Interpersonal skills, outstanding problem solving and decision making skills and
a recognised team player.
Work Timeline
▪ Karmatics Private Limited, Noida, India : Working as Chief technical Officer since April 2016 and
was instrumental in rolling out of two large scale products in a year.
▪ Samsung Electronics, Suwon, South Korea : Worked with Samsung HQ Mobile R&D division from
Jan 2011 till March 2016.
▪ Nvidia Graphics, Pune:
Worked as Senior System Software Engineer from July 2006 till October 2010
Worked for 2 years in Nvidia, Santa Clara (U.S.A.) on L1 Visa for Fermi chip design work.
▪ Samsung India Electronics Limited, Noida:
Worked as System Software Engineer from November 2004 – June 2006.
Worked for 3 months is Samsung Headquarters, Seoul (Korea) on Magic Tune 64 bit project.
Fields of Interest
▪ Device Drivers.
▪ Embedded Programming (C, C++).
▪ Power Management & clock programming.
▪
Education
B.Tech (Electronics Engineering) from Indian Institute of Technology (IIT) , Dhanbad.(2000-2004)
Skills
APB, AXI
ARM Base IP's
Debugging skills
Debugging using WinDBG (Windows),
GDB(Linux), JTAG Debugging (Using
Trace 32 Lautebauch). Dalvik SDK.
- Worked on Client Library development (iOS/Android/Cordova) for Push Notification and Analytics
Product (ShipitMobi/Politiko)
- Developed the overall database architecture for the Analytics Server with our Team.
- Development and management of IT Infra for the whole team (BitBucket, GIT, Github Account, Maven ,
JFrog Bintray)
- Manage the continuous Integration and Testing of the incoming code on BitBucket with a temp QA
Team.
- Was also involved with end level Sales and Marketing of our Products and providing technical know
how/follow-up of the product details to our clients.
ShipitMobi ( https://www.shipit.mobi/ ) is a Push Notification and Analytics Platform which helps App and
Website Developers in delivering and creating push notifications to enhance their User Engagement. Close
Monitoring of App and Website usage is also possible through this Software Platform.
I worked as the Chief Technology Officer of Karmatics Private Limited and managed the technological part of
this project. My primary R&R in this project is :-
• Design the project architecture and constantly evaluate and upgrade each module as required.
• Wrote functional Client Libraries for ShipitMobi Integration for Android (Java) and iOS(Objective C).
• Manage AWS Server for cloud deployment of the backend database and Analytics Platform.
• Selecting the technologies and platforms we were going to use in our implementation
Apart from other private Software companies, ShipitMobi is currently being used by Ministry of Health and
Family Welfare, Government of India (GoI) for their app/web Push Notification.
Politiko ( http://politiko.in/ ) is a social media convergence tool designed for next generation political
campaigning on social media. I was instrumental from the concept to the final implementation stage of this
product. From technical perspective I was involved with the development of RestAPI and add support for Twitter
Snoop and alert generation.
This project gave me an opportunity to work on RISC processors and Android platform for Samsung handheld
devices(Smartphone / Tablet). My primary responsibility was :-
• Development and maintenance of Kernel device drivers for Power Management Integrated
Circuit(Samsung In-House PMIC) for Samsung handheld devices (Phones /Tablets)
• Development and maintenance of Kernel device drivers for Battery management Interface. This task
comprised of Integration and Implementation of " Fuel Gauge" Device Drivers in close collaboration with
the third party team (MAXIM) . (Max 17042, Max17047).
• Device Driver Development and Bug fixing for Micro-USB IC from Charger perspective.
• Development and Management of Module drivers for "Device -DVFS" for Samsung RISC Processors
( Exynos ).
• Development and Management of Module drivers for "Thermal Management Unit" and "Thermal Sensing
Unit".
• Code development from the scratch for Samsung In-House NoC Profilers and their integration for Device-
DVFS for Samsung Gear Platform. (Gear-O).
• Worked in close collaboration with Hardware Team for ABB (Adaptive Body Bias) and Adaptive Support
Voltage implementation.
Clock Programming and Architecture Design for Upcoming GPU chip design (April 2010 – Oct, 2010),
Nvidia
This project gave me an opportunity to lead the design of clock modules for upcoming Nvidia Chip on a higher
level from SW end. I am presently managing a team of engineers and involved with the task of giving
recommendations and providing design for the clocks on the new chip design.
▪ Guiding a team of engineers in designing the SW code (driver) for clocks as per the new/upcoming chip
design.
▪ Writing a test suite for the code written in SW to be verified on RTL and Emulation Platforms.
▪ Interact with the HW team and provide necessary suggestions for the clock module design by
understanding the schematics provided by them. I had to make recommendations in the HW design with
respect to perf and power analysis from the SW end.
Clock Programming and Architecture Design FERMI GPU(August 2008 – March 2010), Nvidia
The work involved the complete design of the Clock code from the SW side from the scratch for the new NVIDIA
chip architecture also known as FERMI. I worked with the hardware in reviewing the hardware manuals and
giving recommendations for making changes in the Clock / PLL arrangements in the whole clock HW tree
structure. It included writing kernel level code for implementation and the verification of the new design on RTL
and testing of the clock structures and API’s. This project gave me an opportunity to be involved chip designing
process at all phases including the emulation, simulation (RTL) and Bring-Up Phase.
The work also involves in-depth analysis of clock timing signals using Verdi on RTL. Waves dumped from RTL
synthesis are analysed and the driver is correspondingly updated for proper clock signal generation. This also
gave me an opportunity to work on emulation and verify the clock distribution across the chip using cadence
based Palladium system. PLLs were emulated in the database and the clock distribution control across chip
was verified across all data transactions.
Also, I got the opportunity to write the driver code for memory clock handling (MEMCTL Programming) and the
FB
interface programming for GDDR3.. This constituted the majority of clock signal analysis on RTL.
ZBC is a new design implemented both in HW and SW to do the ROP clears utilising nearly zero FB
channel bandwidth in a GPU.
The project involves the implementation of ZBC API's for clients(Open GL and DX) to use .The work
involved interacting with the hardware in verification of changes made in SW through RTL and F-Model,
review of hardware manuals and making suggestion for changes in SW design as per the requirement
and design feasibility.
The work also involved the design of the test infrastructure in the kernel level to test the functionality.
With this project I got an opportunity to work with F-Model (Full chip C Model) as well as on RTL of GPU while
writing the code in tandem for the chip development with the hardware design development.
The project gave me an opportunity to work on RTL (and other basic chip emulation and simulation) models and
to be familiar with the overall chip design phase.
I was entitled with the task of designing the SW related to the clock arch for the new chip.
The project involved the instrumentation and optimisation of the time spent in the driver code whenever any test
is run on RTL. This involves a proper kernel base profiling of the code and optimising the SW code to make any
regression go faster on the RTL. This project gave me an interface on PERL script writing and handling of
Regular Expressions for comparing files and editing them using Perl.
MXM was NVIDIA specific technology for Notebooks with replaceable GPU cards. I had worked on this
technology from the display driver’s side which includes writing the ACPI (for Vista) && WMI (for XP) specific
calls and the code compatibility for ACPI 3.0 spec for notebooks.
This project gave me a fair understanding of WMI specifications and ACPI calls including the Interaction
between the SBIOS, VBIOS and the OS (Both Vista and XP) in ACPI calls and their handling from the display
driver level.
In this project my job responsibility was to work on the Display Driver Development, enhancement and
maintenance on Windows XP (32 Bit / 64 Bit) and Windows Vista (32 Bit / 64 Bit) Platforms. The Nv8x
Architecture is an indigenous technology developed by NVIDIA to support high end graphic capabilities with
high bandwidth, better rendering capabilities and accelerated graphics as compared to other graphic cards.
Work was mainly concentrated on delivering OEM specific Display Driver Solutions for Mobile workstations as a
Display Driver Engineer. (Laptops or Notebooks).
The work included direct interaction to the customer through software OEM, Program managers and making
changes in code as per client’s requirement.
The project was a major product of Samsung India Software Centre. The product is aimed at the use of
VESA (Video Electronics Standard Association) protocol in establishing a communication with the internal
Monitor E2PROM in establishing a communication with the system and controlling the monitor properties. It’s a
user friendly application level alternative to the analog control (button controls) of the brightness, contrast,
image and color settings of a monitor. It helps in optimizing the monitor to the user preferences. It is an
integrated software program that is designed to optimize all monitor settings, and is equipped with an intuitive
GUI (Graphic User Interface) which includes many more features, as compared to OSD.
Magic Tune employs an advanced display technology, called the DDC/CI (Display Data Channel Command
Interface) protocol, to control all monitor settings.
The software is available at the following address:
http://www.samsung.com/us/consumer/learningresources/monitor/magetune/pop_intro.html
The communication is achieved by using graphic cards I2C lines buffer in establishing the DDC/CI
communication protocol. My role in the project was the development and maintenance of both the driver and the
application part of the code on Windows platform. It included the exploration of the drivers of various graphic
cards and making our code compatible to the upcoming graphic cards and graphics technologies in the market.
1. Porting of Magic Tune for 64 bit systems (both Intel and AMD).(Done in HQ)
2. Porting of Magic Tune for PCI Express Technology Graphic Cards.(Done in HQ).
i. Intel 915/945
ii. Matrox G200 and Matrox G200 MMS,G450,G200 PCI Express cards
This project gave me an opportunity to work on Windows Device (Graphics) Driver field and experience on 2K
DDK, NT DDK, XP DDK, and XP64 DDK. It also gave me a vivid exposure to the accessing technique and
analysis of the PCI configuration space both for the old existing and new PCI Express architecture devices.
The project is currently in the market as a TV model. It was allotted to me as a training project in which I
was supposed to optimise the code of a famous TV Model of Samsung Code named
—“Kanchanjunga” .This project gave an exposure to the OSD programming of a CRT TV in C language.
The project was targeted for a special chip from Philips TDA 9370, with DNIe technology implemented.
Application Title : (English) : Method for Outputting according to Temperature and Electronic Device supporting
the same
▪ US Patent : Method for outputting content and electronic device for supporting the same . (US
20170094037 A1 )
▪ Was awarded the "Engineer of the Month" while working for System SW Development for Android Power
Management.
▪ Got promoted after one year of joining Samsung Electronics South Korea to a position equivalent of a
technical manager.
▪ Was rewarded for my contributions in the new chip designed (code name Fermi) at Nvidia in August 2009.
▪ Have been awarded Certificate of excellence for hard work and positive attitude towards the company
by Samsung India Electronics Limited in February 2006.
Languages Known
▪ English — Proficient.
▪ Hindi — Proficient.