MECOP Internship August 2008 Kevin Jones SOFTWARE DEVELOPMENT INTERN CALIBRE – YIELD SERVER Background HP Planar Systems Mentor Graphics – DFM – Mentor — Greg - Manager — Sridhar Calibre - YS 2 KCJ, MECOP Internship, August 2008 Work Conditions Hours - 40 hours/week Wages – $21/hour Overtime – pre-approved 3 KCJ, MECOP Internship, August 2008 Projects 4 KCJ, MECOP Internship, August 2008 Organizational Reporting Structure Mentor – Sridhar — Assigned DFM — Manager most tasks – Greg Calibre — Related products/tasks — QA 5 KCJ, MECOP Internship, August 2008 Projects & Tasks Getting up to speed… — C++ — Basics of Application Specific Integrated Circuits — Calibre products — TCL, TK, and C APIs — Perl 6 KCJ, MECOP Internship, August 2008 Projects & Tasks Getting up to speed…(continued) — Environment Linux Mentor build environment Regression test environment Other tools: — Debugger — Rational Purify — Sun Performance Analyzer 7 KCJ, MECOP Internship, August 2008 Projects & Tasks Converted help output to TCL — Allowed for access from other products Multi-command TCL script (left) — Redirects commands to multiple YS instances — Used for DFM DB lock testing 8 KCJ, MECOP Internship, August 2008 Projects & Tasks Command, Object, and Notification Registry — Common Goals: Simplify common tasks Centralize entry locations Eliminate invalid/inconsistent entries 9 KCJ, MECOP Internship, August 2008 Command, Object, Notification Registry 10 KCJ, MECOP Internship, August 2008 Projects & Tasks Command Registry — Single line of text will: Register the command with the TCL interpreter Integrate the command with the help system Possibly add it to an API for supported commands — Command Object Registry — Generates completion code needed to create a new TCL type Notification Registry — Generates code needed to add a new notification and process the specified arguments — Refactored to remove unneeded levels of indirection 11 KCJ, MECOP Internship, August 2008 Projects & Tasks Added, exposed and/or updated various interfaces and commands Updated various TCL types to use a change observer interface (allowing for proper object lifetime) Updated some commands to support read-only databases Added support for sending load-time progress to GUI clients. 12 KCJ, MECOP Internship, August 2008 Projects & Tasks Updated all commands in YS to use exceptions for error handling. Implemented a Performance Monitoring infrastructure for: — Timing various tasks — Measuring memory usages changes. Created large invalid-input test case, which resulted in fixing many (75+) potential crash scenarios. 13 KCJ, MECOP Internship, August 2008 Projects & Tasks Added new revision commands for extracting revision tree information. Updated revision listing command — Now works with unloaded database (much faster) — Updated sort algorithm Analyzed and documented YS /DFM DB timing — Based on a series of test cases & scenarios — Breakdown of time-consuming call hierarchy Created a Tk GUI based help implementation 14 KCJ, MECOP Internship, August 2008 What I learned… 15 KCJ, MECOP Internship, August 2008 What I’ve learned Basics of what the EDA industry is about Implications of huge code base: — Lots of testing, retesting Languages: C++, Perl, TCL/Tk, Shell Scripting Gained more experience working with large code bases Product development in Linux environment 16 KCJ, MECOP Internship, August 2008 Helpful courses Programming Projects in C++ (CS 262) Data Structures (CS 261) Operating Systems I/II (CS 311/CS 411) Analysis of Algorithms (CS 325) 17 KCJ, MECOP Internship, August 2008 Overall Impressions Mutually beneficial — Learned what I wanted to learn and more! — Completed many tasks, created numerous documents, maintained code quality 18 KCJ, MECOP Internship, August 2008 Internship Differences Planar Systems — Small company with minimal facilities — Software team in a hardware company — Windows; C# development; single target platform Mentor Graphics — Large company with on-site cafeteria, gym, recreational equipment, etc. — Software company with a hardware focus - steeper product/topic learning curve — Linux; C/C++,Tcl/Tk, Perl development; numerous target platforms 19 KCJ, MECOP Internship, August 2008 20 KCJ, MECOP Internship, August 2008