Open Source Tools for Verification Rich Porter DVClub January 2013 Aims of this presentation

● Remind you that you already use open source tooling ● Introduce some new tools ○ Encourage you to keep current with technology ○ Pique interest sufficiently so that you might consider using them in future ● Hope to introduce everyone to at least one new tool! Why Open Source?

● Free? ● High Quality Software ● Debugged ● Contribute ● Fix ● Customize What you knew already

● GNU/linux ○ open solaris ○ FreeBSD ● emacs and vi ○ nedit ○ eclipse with verilog plugin ● rcs, cvs ● firefox, thunderbird ● tcl, ● X11 and window managers Version Control

● cvs first released in 1990 ● Subversion ○ introduces version as unit of change ○ still need for a central repository ○ makes branching easier ● DVCS ○ new wave of tools all from 2005 ○ no central repository as such, local commits, easy branches, push/pull ○ bzr, hg, git ● Tool versioning ○ modules bug tracking &

● gnats, , Mantis, ... ● twiki, MoinMoin, ... ● Integrated VCS, issue tracking & wiki ○ Cross referencing of call #, version ○ ○ Both have wide variety of plugins ■ including multiple VCS support Compilation and Profiling

● gcc is widely used ● llvm/clang is now production ready ○ FreeBSD now uses clang by default ○ faster compilation times ○ 'better' output ● valgrind (val-grinned) ○ more than just memcheck ● google perftools ○ tcmalloc, profiler ○ nice graphing output with graphviz ■ cpu profiling ■ memory profiling/leak detection Build & Continuous Integration

● make ○ Probably still the best for source code compilation ○ ccache could help ● scons ○ python based build tool ○ python expressiveness and extensibility

● tinderbox3, hudson forked to jenkins ○ lots of plugins ○ good support for VCS ○ probably still need a test framework underneath Farm Management

(was SGE, was codine) ○ grid scheduler ● open lava fork of platform lsf ● Support for DRMAA ○ tag">c++/perl/python/ruby library ○ scheduler agnostic?

● Network Monitoring ○ Zabbix ○ Big Sister ○ ... Scripting

● Python ○ library support, including cProfile, pdb ○ pypy,pyrex ● Ruby ● OCaml ● Go ● Lua ○ Fast with small memory footprint ● works with all the above ○ 'Go' via cgo ● Javascript (ECMA script) ○ v8, Spider Monkey (Ion Monkey) Data Visualisation

● was gnuplot or a ● chromium, firefox, opera ○ chromium fastest? ● but need a webserver ○ apache an old, overpowered monster ○ micro web frameworks ■ bottle, unicorn, uwsgi ○ HTML template engines ■ genshi, mako ● helper libraries ○ jquery, jquery-ui and plugins ■ flot, jqote2, ... ○ also mootools, dojo toolkit, GWT ...

● Filesystem? ● Relational (SQL) ○ sqlite (start here) ○ MySQL, Percona, MariaDB ○ PostgreSQL ○ Drizzle ○ Web management apps ■ phpMyAdmin, ... ● NoSQL ○ mongoDB, cassandra, voldemort, couchDB ○ document stores with indices ● XML ○ sedna Other Tools

● That I don't really know much about ● GNU Octave ● Ceph, Lustre ○ To build scalable, redundant "private cloud" ○ Using cheap commodity hardware ○ Ceph has been in the news recently ● Hadoop ○ As above but replacing queue for scheduling ● Android ○ An app for your phones ○ As more and more TVs become android powered, an app to deliver CI status ○ Put a TV in your coffee room, on the office wall Thank You for Listening

● Questions

● Contact me ○ [email protected]