JSFoo 2017

JSFoo is a conference about JavaScript and everything related.

Mayank Badola


Hardware Description and Emulation using JavaScript

Submitted Jan 9, 2017

Gone are the days when you had to rely on the likes of VHDL or Verilog, when you wanted to get involved in hardware description or craved a bit of Hardware Engineering.

What if JavaScript, a language for the web, can be used to derive meaningful hardware descriptions, altogether bridging the gap between software and hardware by exposing frameworks easily extensible and understandable by majority of the JavaScript community ...


The talk will be based off my experimental project Architect (https://github.com/mbad0la/Architect) which tries to hack upon the Events API in NodeJS to build a reactive interface suitable for doing hardware description and emulation.

I am also very much intrigued by Reactive Programming at the moment and will try to fit in Observables for the purposes of this talk, although the Events API implementation is interesting too.

A tentative outline may be :

  • Inspiration
  • What is Reactive Programming
  • Let’s build some Basic Gates
  • How to transmit state changes (i.e how to make things reactive)
  • Composing higher level hardware abstraction (Building a half-adder using gates)
  • Abstracting even further (Building a full-adder using half-adders)
  • Final abstraction (n-bit PIPO Adder)

This outline is tentative and will be open to modifications and suggestions to improve the engagement of community during the talk.


  • Idea about combinational circuits
  • Familiarity with NodeJS

Speaker bio

I was curious about the capabilities of JavaScript in Reactive Programming and what better way to hack on that than to try hardware description and emulation. My experiment hence originates from the Computer Architecture course wherein I studied VHDL and my love for JavaScript.

As this is a fun experimental project demostrating a cool hack using JavaScript, my credentials as a Computer Engineering student graduating in 2017 aligns with how the JS Community operates. Unhindered, agile and always eager to extend and experiment.




{{ gettext('Login to leave a comment') }}

{{ gettext('Post a comment…') }}
{{ gettext('New comment') }}
{{ formTitle }}

{{ errorMsg }}

{{ gettext('No comments posted yet') }}

Hosted by

JSFoo is a forum for discussing UI engineering; fullstack development; web applications engineering, performance, security and design; accessibility; and latest developments in #JavaScript. Follow JSFoo on Twitter more