Course code: MICRON-8
  • Years with company: 9
  • Years programming: 32
  • Primary programming language: C
  • Other programming languages: Python, Java, C++
  • Unit test harnesses: Python unittest, JUnit
  • Something else: I'm the firmware architect and lead for the 3rd-gen 'Hybrid Memory Cube' program.
  • Test practice now: Tests are primarily Python-driven via a unittest-derived class library. These execute against the product firmware in various targets in emulation, simulation and actual silicon. We also have some standalone variant builds tested via Python, SystemVerilog and C.
  • Target system: Its a management ASIC for controlling stacked DRAM die.
  • Dev tools: GNU-derived C compilers, Visual C, make, Eclipse, Source Insight
  • Build time: 1-5 minutes
  • Coding standard: Primarily a set of C naming and coding guidelines based on Barr Group embedded C standards (and others), checked via splint and astyle
  • Function too long: We have to support patching at the function level so we are careful about function sizes. Typically >300 bytes (compiled) is too big.
  • Code reviews: Offline peer review, collaborative walkthrough, resolution action-list
  • Code time: 20%
  • Test time: 60%
  • Debug time: 20%
  • Favorite thing about dev: I like building things and figuring out why they don't work like they are supposed to. The ability to learn, adapt and extend software on a faster timeline than logic hardware or physical stuff. Mentoring and teaching others.
  • Least favorite thing about dev: Branching and merging. 'Big-bang' integration. Requirements capture is painful, requirements sign-off is almost impossible. Mentoring and teaching others...
  • Tdd knowledge: Not a lot. I think our current approach is test-focused, but I may be way off.
  • Why are you attending: To learn about TDD, and how it could help our planning/estimating/development/verification methodologies.