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