Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Digital hardware design: What can we learn from software development – and what not?

Digital hardware design: What can we learn from software development – and what not?

Traditionally, the goal of digital hardware design has been to produce an ASIC. Ideally one which works perfectly after the first tapeout. Tailored towards this goal are our development and testing processes: strictly following a V-model with separated development and verification teams, long design iterations and code which, once it's known to work, is never touched again. For people coming from the software world, this development approach looks arcane. Where are all the sprints, the agile methods, the quick iterations?

With FPGAs being on the rise and available in more and more cloud data centers and possibly bundled with our next Intel processor, we finally get the chance to cheaply make mistakes in digital hardware designs: no more wasted tapeouts, just a new flashing of the FPGA is necessary to fix a bug.

Join me in this talk for a look at development processes and tools. Where can we build bridges between the software and hardware development world, and where do we have fundamentally different needs?

Presented at FOSDEM 2017 in the EDA Devroom.
Video at https://fosdem.org/2017/schedule/event/digital_hw_sw_lessons/

Philipp Wagner

February 05, 2017
Tweet

More Decks by Philipp Wagner

Other Decks in Technology

Transcript

  1. Digital hardware design What can we learn from software development

    – and what not? LibreCores Free and Open Digital Hardware Philipp Wagner @ FOSDEM 2017
  2. Peter Kemp / Paul Smith via Wikimedia Commons, CC BY

    2.0 (edited) https://en.wikipedia.org/wiki/File:Waterfall_model.svg Hardware Development Implementation Design Requirements Maintenance Verification
  3. What can we learn from software development – and what

    not? 3 2017-02-05 Photo by VFS Digital Design via Flickr, CC-BY 2.0 https://www.flickr.com/photos/vfsdigitaldesign/5396691102 Software Development
  4. What can we learn from software development – and what

    not? 4 2017-02-05 Can we treat FPGA-targeting hardware design like software design? Gareth Halfacree via Flickr, CC BY-SA 2.0 https://www.flickr.com/photos/120586634@N05/15455173526
  5. What can we learn from software development – and what

    not? 5 2017-02-05 Today we look at ... • Be less confident in quality. • Iterate! Iterate! Iterate! • Differentiate where it matters most.
  6. What can we learn from software development – and what

    not? 6 2017-02-05 Evil Erin via Flickr, CC BY 2.0 https://www.flickr.com/photos/evilerin/3723714381
  7. What can we learn from software development – and what

    not? 7 2017-02-05 confidence in quality testing effort Source: gut feeling
  8. What can we learn from software development – and what

    not? 8 2017-02-05 Be less confident in quality • FPGAs enable cheap respins • You don’t need to get it right the first time. Win big going 80:20! • What does an FPGA-targeting testing and verification flow look like? • Prerequisite for most software development approaches.
  9. What can we learn from software development – and what

    not? 9 2017-02-05 Iterate! Iterate! Iterate! productivity = f ( feedback time )
  10. What can we learn from software development – and what

    not? 11 2017-02-05 Iterate! Iterate! Iterate! • FPGAs enable cheap iterations. • But do we have the tools for fast iterations? • Intelligent IDEs • Linting and static analysis • Automation – Continuous Integration, Continuous Delivery – Very nice side effect: reproducible results
  11. What can we learn from software development – and what

    not? 13 2017-02-05 http://s909.photobucket.com/user/cledford22/media/003.jpg.html Differentiate where it matters most.
  12. What can we learn from software development – and what

    not? 14 2017-02-05 What makes your project better? • The build system? • The way you include dependencies? • Your choice of programming language? • Your coding style? • Your FIFO implementation?
  13. What can we learn from software development – and what

    not? 15 2017-02-05 Finding common ground • Use an intelligent HDL build system – fusesoc, hdlmake • Speak a common language • Work across tools – Polyfills for unsupported language features? • Go for a common coding style
  14. What can we learn from software development – and what

    not? 18 2017-02-05 Looking Ahead • Quality Metrics – machine-generated • commit statistics • build/test status – user-generated • reviews, likes, “I’ve taped this out”, etc. – more ideas welcome! Screenshot from Puppet Forge
  15. What can we learn from software development – and what

    not? 19 2017-02-05 Looking Ahead (II) • Integration with package managers (like fusesoc) – prior art: npm, packagist, cargo, puppet forge, Linux package managers, and many more • document FOSSi best practices – license choices – project hosting – testing/verification • LibreCores Continuous Integration (CI) Currently in prototyping, see https://librecores.org/static/librecores-ci for details.
  16. What can we learn from software development – and what

    not? 20 2017-02-05 Contributing • Add your project to LibreCores • Add your blog to Planet LibreCores just open a GH issue, or write me a mail → • Write, edit and comment on documentation • Write code http://librecores-web.readthedocs.io/en/latest/contributing.html has a list of contribution opportunities, good first bugs, and contact information.
  17. What can we learn from software development – and what

    not? 21 2017-02-05 Rochdale Canal at Hebden Bridge. Poliphilo via Wikimedia Commons, CC0 Isn’t that a nice place?
  18. ORConf 2017 Hebden Bridge, UK Save the date for the

    open source digital design conference September 8 – 10, 2017 www.orconf.org
  19. me Philipp Wagner [email protected] www.philipp-wagner.com let's talk! FOSSi Foundation [email protected]

    www.fossi-foundation.org #librecores on freenode You can freely remix this presentation under the terms of the Creative Commons BY-SA 4.0 license.