Mamba: Closing the Performance Gap in Productive Hardware Development Frameworks

Modern high-level languages bring compelling productivity benefits to hardware design and verification. For example, hardware generation and simulation frameworks (HGSFs) use a single “host” language for parameterization, static elaboration, test bench generation, behavioral modeling, and simulation. Unfortunately, HGSFs often suffer from slow simulator performance which undermines their potential productivity benefits. In this paper, we introduce Mamba, a new Python-based HGSF that co-optimizes both the framework and a general-purpose just-in-time compiler. We conduct a quantitative comparison of Mamba vs. traditional and emerging hardware development frameworks across both simple and complex designs. Our results suggest Mamba is able to match the performance of commercial Verilog simulators and is 10 × faster than existing HGSFs while still maintaining the productivity of using a high-level language in hardware design.

[1]  Joseph McMahan,et al.  A pythonic approach for rapid hardware prototyping and instrumentation , 2017, 2017 27th International Conference on Field Programmable Logic and Applications (FPL).

[2]  Christopher Batten,et al.  PyMTL: A Unified Framework for Vertically Integrated Computer Architecture Research , 2014, 2014 47th Annual IEEE/ACM International Symposium on Microarchitecture.

[3]  J. P. Grossman,et al.  The role of Cascade, a cycle-based simulation infrastructure, in designing the Anton special-purpose supercomputers , 2013, 2013 50th ACM/EDAC/IEEE Design Automation Conference (DAC).

[4]  John Wawrzynek,et al.  Chisel: Constructing hardware in a Scala embedded language , 2012, DAC Design Automation Conference 2012.

[5]  Jason Cong,et al.  High-Level Synthesis for FPGAs: From Prototyping to Deployment , 2011, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[6]  Mark Horowitz,et al.  Rethinking Digital Design: Why Design Must Change , 2010, IEEE Micro.

[7]  Jan Kuper,et al.  C?aSH: Structural Descriptions of Synchronous Hardware Using Haskell , 2010, 2010 13th Euromicro Conference on Digital System Design: Architectures, Methods and Tools.

[8]  Carl Friedrich Bolz,et al.  Tracing the meta-level: PyPy's tracing JIT compiler , 2009, ICOOOLPS@ECOOP.

[9]  Rudy Lauwereins,et al.  Design, Automation, and Test in Europe , 2008 .

[10]  H. Mehrez,et al.  Stratus: A procedural circuit description language based upon Python , 2007, 2007 Internatonal Conference on Microelectronics.

[11]  Davide Ancona,et al.  RPython: a step towards reconciling dynamically and statically typed OO languages , 2007, DLS '07.

[12]  Ali Mashtizadeh PHDL : a Python Hardware Design framework , 2007 .

[13]  Jan Decaluwe MyHDL: a python-based hardware description language , 2004 .

[14]  Rishiyur S. Nikhil,et al.  Bluespec System Verilog: efficient, correct RTL from high level specifications , 2004, Proceedings. Second ACM and IEEE International Conference on Formal Methods and Models for Co-Design, 2004. MEMOCODE '04..

[15]  Olivier Temam,et al.  A new optimized implementation of the SystemC engine using acyclic scheduling , 2004, Proceedings Design, Automation and Test in Europe Conference and Exhibition.

[16]  Wayne Luk,et al.  Hardware Design with a Scripting Language , 2003, FPL.

[17]  Preeti Ranjan Panda,et al.  SystemC - a modeling platform supporting multiple design abstractions , 2001, International Symposium on System Synthesis (IEEE Cat. No.01EX526).

[18]  Miriam Leeser,et al.  HML, a novel hardware description language and its translation to VHDL , 2000, IEEE Trans. Very Large Scale Integr. Syst..

[19]  James Jennings,et al.  Verischemelog: Verilog embedded in Scheme , 1999, DSL '99.

[20]  Mary Sheeran,et al.  Lava: hardware design in Haskell , 1998, ICFP '98.

[21]  Brad L. Hutchings,et al.  JHDL-an HDL for reconfigurable systems , 1998, Proceedings. IEEE Symposium on FPGAs for Custom Computing Machines (Cat. No.98TB100251).