about #modernhw: tools and techniques towards modern digital electronics design

img

Modern digital hardware design in research implies using the right tools. But this is not necessarily always the case.
An engineer usually has to deal with heavyweight tooling, propitiatory GUIs, buggy software and more generally, a handful of rudimentary toolchains developed just to pretend they might be of some utility. But they are not. Most usually, they contribute to pollute the heart of what it’s relevant: ideas, concepts and how they translate to hardware.
Weird languages, obsolete codes, old-fashioned standards, mainstream OSs, ... the list goes long. On top of that, industry imposes wrong habits and closed code, impossible to track, debug or to share. Engineers are most times forced to use some tool just because that’s the way it is, and everyone’s else is doing the same. No choice.
Hardware digital design lacks all the usual development utilities used by software engineers since ages. No control version, no online forges, no patches, no reproducibility, no documentation, no code comments, no scripting, no code review. Just a set of random zip files in a USB key, including a huge amount of useless data files no one cares about.
Is it possible to afford things differently ? Let’s see. Do we have better tools for the task at hand ? I think so. Could we envision to design, review and publish in such a way as it reveals useful in research ? Let’s try.
This series of #modernhw posts are an attempt to explore a somehow original path towards a reproducible, lightweight way of understanding digital hardware design, based on #freesoftware. Here, I’ll try to describe a handful of tools I find useful, why they're helpful in this context, and how to use them to achieve our goal.