WOSET 2021 Proceedings

To cite an article, please use this format: (author names here), “(article title here)”, Article No. (article number here), Workshop on Open-Source EDA Technology (WOSET), 2021.

For live discussions via Zoom and Slack, please see the WOSET 2021 Schedule.

Organization

Co-Chairs

• Jose Renau, UC Santa Cruz (Co-Chair)
• Matthew Guthaus, UC Santa Cruz (Co-Chair)

Program Committee

• Matthew Guthaus, UC Santa Cruz
• Jack Koenig, SiFive
• Rajit Manohar, Yale University
• Priyanka Raina, Stanford
• Jose Renau, UC Santa Cruz
• Matthew Venn, Zero to ASIC Course
• Bruno Schmidt, EPFL
• Scott Temple, University of Utah

Web Chair

• Jesse Cirimeli-Low, UC Santa Cruz

Virtual Arrangements

• Sakshi Garg, UC Santa Cruz

Best contribution

Winner

• TBD

Honorable mentions:

• TBD

Best video

Winner

• TBD

Honorable mentions:

• TBD

Article 1

CFU Playground: Build your own ML Processor using Open Source

Abstract

The CFU (Custom Function Unit) Playground allows you to design and build machine learning (ML) accelerators extending an FPGA-based RISC-V core, running on an FPGA board at your desk. Because the CPU is soft, it can be both tailored (e.g. cache sizes modified) and extended (new instructions added through the use of a Custom Function Unit). Push-button builds of the customized processor combined with a provided interactive software test/measurement harness allows for very rapid edit-compile-profile cycles (on the order of minutes) at each stage of accelerator development.

A primary goal of the CFU Playground is to provide a delightful and fun experience to the developer, by, as far as possible, removing the burden of maintaining infrastructure such as configuring toolchains, writing test harnesses, building performance measurement jigs, or editing Makefiles. This rapid, lightweight framework lets the user realize a large performance benefit from a relatively small investment in creating customized hardware.

CFU Playground bundles together open source software (TensorFlow, GCC), open-source RTL generation IP and toolkits (LiteX, VexRiscv, Migen, nMigen), and open-source FPGA tools for synthesis, place, and route (yosys, nextpnr, vpr, etc.). By using open source for the entire stack, % software {\em and} gateware IP, we give the user access to customize and co-optimize hardware and software, resulting in a specialized solution unencumbered by licensing restrictions and not tied to a particular FPGA or board.

CFU Playground is available under an Apache 2.0 license at https://github.com/google/CFU-Playground. Online documentation is available at https://cfu-playground.readthedocs.io.

Authors

3. Joseph Bushagour (Purdue University)

Article 2

The Open-Source Bluespec bsc Compiler and Reusable Example Designs

Abstract

The bsc compiler, which has been in commercial use for two decades, was released as a free and open-source artefact in January 2020. Here we describe briefly bsc and its flows, available tutorial materials, and several reusable open-source designs using bsc, many of them centered on RISC-V (from embedded to Linux-capable CPUs and systems), all FPGA-ready.

Authors

1. Julie Schwartz quark@bluespec.com (Bluespec, Inc.)
2. Niraj N. Sharma niraj.sharma@bluespec.com (Bluespec, Inc.)
3. Darius Rad darius@bluespec.com (Bluespec, Inc.)
4. Ken Takusagawa ken@bluespec.com (Bluespec, Inc.)
5. Joe Stoy stoy@bluespec.com (Bluespec, Inc.)
6. Rishiyur Nikhil nikhil@bluespec.com (Bluespec, Inc.)

Article 3

Open-Source Formal Verification for Chisel

Abstract

Chisel is a Scala embedded hardware construction language allowing designers to take advantage of a general purpose programming language to generate digital circuit descriptions. From the beginning Chisel has featured integration with RTL simulators in order to allow designers to unit test their designs. We recently added support for easy formal verification of Chisel designs. Our implementation will be available to all users of the next Chisel and chiseltest releases. The source code is hosted on github and published under a permissive Apache 2 license.

Authors

1. Kevin Laeufer laeufer@berkeley.edu (University of California, Berkeley)
2. Jonathan Bachrach jrb@berkeley.edu (University of California, Berkeley)
3. Koushik Sen ksen@berkeley.edu (University of California, Berkeley)

Article 4

Abstract

The Magic layout editor has always been outside of the mainstream in EDA tools in its concept that custom manual layout should be simple and straightforward while remaining essentially unconstrained. Magic does this by hiding various implant layers, marker layers, and cut layers from the designer. As a consequence, it has to generate all these layers automatically during GDS format mask data generation. This is an extremely difficult problem. I will present a variety of examples requiring sophisticated decision-making on automated layout, strategies for producing DRC-correct layout, and a discussion of recent enhancements to Magic’s GDS-generation engine and what further development work is required

Author

tim@opencircuitdesign.com

Article 5

Abstract

DSLX is a dataflow-oriented functional language used to build hardware that can also run effectively as host software.

DSLX’s syntax resembles Rust, while being an immutable expression-based dataflow DSL and adding hardware-oriented features like arbitrary bitwidths.

Using the XLS (Accelerated HW Synthesis) toolchain, DSLX can target to XLS IR intermediate format to enable development flows for FPGAs and ASICs (thru Verilog conversation) or native-speed execution (thru LLVM-based JIT compilation).

In this presentation (submitted in the “Work in Progress” category), we go step-by-step thru the process of “Porting software to hardware” by rewriting a C routine in DSLX and showing how to integrate the XLS toolchain in a typical FLOSS FPGA flow to synthesize it on a budget FPGA board like the FoMU.

Article 6

MLIR as Hardware Compiler Infrastructure

Authors

1. Schuyler Eldridge schuyler.eldridge@sifive.com (SiFive)
2. Prithayan Barua (SiFive)
3. Aliaksei Chapyzhenka (SiFive)
4. Adam Izraelevitz (SiFive)
5. Jack Koenig (SiFive)
6. Chris Lattner (SiFive)
7. Andrew Lenharth (SiFive)
8. George Leontiev (SiFive)
9. Fabian Schuiki (SiFive)
10. Ram Sunder (SiFive)
11. Andrew Young (SiFive)
12. Richard Xia (SiFive)

Article 7

A Toolkit for Designing Hardware DSLs

Abstract

Recent years have seen a renewed interest in open-source hardware design tools everywhere in the stack—from new register-transfer-level (RTL) languages to open-source flows for fabricating silicon. While innovation in the traditional hardware stack promises better, faster, and more portable tools, key innovations are still needed to democratize hardware design. Specifically, domain specific languages (DSLs) which allow experts to concisely express computations without delving into low-level hardware details are needed to enable widespread use of hardware accelerators. In order to simplify the gargantuan task of implementing, optimizing, and lowering such hardware domain specific languages (DSLs), we have been building Calyx, an intermediate language (IL) and a compiler infrastructure for accelerator generators. We demonstrate how Calyx IL’s novel separation between the structural and control-flow aspects of an accelerator design enables it to: (1) simplify frontends by efficiently encoding their semantics, (2) enable novel optimization passes that cannot be performed in traditional hardware ILs, and (3) allow us to build software-like debugging infrastructure.

Authors

1. Griffin Berlstein griffin@cs.cornell.edu (Cornell University)
2. Rachit Nigam rnigam@cs.cornell.edu (Cornell University)
3. Chris Gyurgyik cpg49@cornell.edu (Cornell University)
4. Adrian Sampson asampson@cs.cornell.edu (Cornell University)

Article 8

Towards Functional Coverage-Driven Fuzzing for Chisel Designs

Abstract

Verification of digital systems must be done in ever tighter time constraints due to the rise of domain-specific hardware accelerators. To combat this, we can learn from agile techniques, typical in software engineering, and use them for hardware development. In this mindset, Chisel, a hardware construction language embedded in Scala, was developed as a tool to accelerate the implementation of digital designs. Following this path, we developed a high-level verification library named ChiselVerify, bringing functionalities such as functional coverage to the Chisel ecosystem. Using this tool, we propose a functional coverage-driven mutation-based fuzzer for Chisel designs. Initial experiments are done on the Leros accumulator ALU.

Author

1. Andrew Dobis adobis@student.ethz.ch (Technical University of Denmark)
2. Tjark Petersen s186083@student.dtu.dk (Technical University of Denmark)
3. Martin Schoeberl masca@dtu.dk (Technical University of Denmark)

Article 9

SystemVerilog IDE integration with Verible Language Server support

Abstract

Verible is an Open Source developer productivity tool for SystemVerilog. It provides linting, including auto-fix patches, formatting, and code indexing as well as project inspection tools.

Integration with github actions allows to automatically run in continuous integration and comment on pull requests, helping to improve code quality in development teams.

So far, all of these uses have been offline on files at rest, but tool support while writing the code is an additional way Verible will improve developer productivity. Providing online symbol navigation such as “jump to definition” and code quality feedback directly in the IDE is a newly developed feature of Verible. Using the language server protocol, this feature is compatible with all common IDEs.

In this presentation (submitted in the Work-in-progress category), we will give a hands-on introduction of using the various features of the Verible tool set, including the current state of the IDE integration with the language server protocol.

Article 10

RTLFuzzLab

Abstract

Coverage directed mutational fuzz testing has become a popular tool for automated software testing and bug detection. This technique works by providing inputs to a program and measuring which branches in the program under test are explored during execution of those seed inputs. The fuzzer then automatically mutates the original inputs by applying a series of deterministic and non-deterministic mutation operations. The program under test is ran on these newly generated mutant inputs. A new input will be retained to serve as the start for new mutations if and only if it produces coverage of branches which have not been seen before or significantly increases the times a branch has been covered. The vast majority of mutant inputs are immediately discarded as they do not improve the coverage. This automated fuzzing has been very successful in uncovering countless software bugs, however, it has yet to catch on for testing digital hardware designs.

The initial work on applying the fuzzing algorithm used for software testing to register transfer level (RTL) designs described the various added degrees of freedom that we face in the hardware context [1]. One important decision is how to take the sequence of bytes provided by a software fuzzer and use it in a testbench. The simplest solution is to just apply new data to the input wires of the design under test and to stop the test execution once we run out of data provided by the fuzzer. More recent work has proposed to instead covert the raw bytes into read or write tile link transactions through the use of a grammar [2]. Another question is what coverage metric to use as feedback to the fuzzer. The original paper counted the number of toggles on a multiplexer control signal [1], while subsequent papers have suggested to only count full toggles [3] or to use the branch coverage of a software simulation model as proxy for line coverage of the RTL description [2]. The choice of initial input seeds to begin fuzzing with can also affect the results.

We present our ongoing work on RTLFUZZLAB, an open-source framework based on the FIRRTL RTL compiler infras-tructure [4], that makes it easy to explore new fuzzing ideas. We provide an easy integration of the popular AFL fuzzer and are working on adding our own fuzzer implementation to be able to experiment with custom mutations and fuzz scheduler designs. Our direct harness is based on the ideas from the Rfuzz paper [1] and works on any RTL circuit with a single input clock and reset. It can be easily switched out for a bus-centric harness which re-implements the tile link specific harness from the work on Fuzzing hardware like software [2]. We provide various coverage metrics like mux toggle coverage [1], full mux toggle coverage [3] and HDL line coverage (approximating the coverage used in [2]). These coverage metrics can be combined with post-processing functions and arbitrary combinations of them can be selected as feedback to the fuzzer. We also include some simple benchmarks as well as scripts to run benchmarks and analyze results, making it easy to prototype new fuzzing ideas. The code is open source under a BSD license and available on GitHub: https://github.com/ekiwi/rtl-fuzz-lab

REFERENCES

[1] K. Laeufer, J. Koenig, D. Kim, J. Bachrach, and K. Sen, “Rfuzz: Coverage-directed fuzz testing of rtl on fpgas,” in 2018 IEEE/ACM International Conference on Computer-Aided Design (ICCAD). IEEE, 2018, pp. 1–8.

[2] T. Trippel, K. G. Shin, A. Chernyakhovsky, G. Kelly, D. Rizzo, and M. Hicks, “Fuzzing hardware like software,” arXiv preprint arXiv:2102.02308, 2021.

[3] T. Li, H. Zou, D. Luo, and W. Qu, “Symbolic simulation enhanced coverage-directed fuzz testing of rtl design,” in 2021 IEEE International Symposium on Circuits and Systems (ISCAS). IEEE, 2021, pp. 1–5.

[4] A. Izraelevitz, J. Koenig, P. Li, R. Lin, A. Wang, A. Magyar, D. Kim, C. Schmidt, C. Markley, J. Lawson et al., “Reusability is FIRRTL Ground: Hardware Construction Languages, Compiler Frameworks, and Transformations,” in 2017 IEEE/ACM International Conference on Computer-Aided Design (ICCAD). IEEE, 2017, pp. 209–216.

Authors

1. Brandon Fajardo brfajardo@berkeley.edu (UC Berkeley)
2. Kevin Laeufer laeufer@berkeley.edu (UC Berkeley)
3. Jonathan Bachrach jrb@berkeley.edu (UC Berkeley)
4. Koushik Sen ksen@berkeley.edu (UC Berkeley)

Article 11

A CMOS Programmable Analog Standard Cell Library in Skywater 130nm Open-Source Process

Abstract

This work presents an implemented, and where allowed, openly-available programmable analog standard cell library in the open-source skywater 130nm bulk CMOS processes. Standard CMOS elements enable programmablility for many standard-cell components, eliminating the need for large number of device geometries required in classic analog design. This effort presents the methodology in developing these analog standard cell library. The standard cell library was designed to integrate with digital open-source synthesis tools.

Authors

1. Jennifer Hasler jennifer.hasler@ece.gatech.edu (Georgia Institute of Technology)
2. Barry Muldrey muldrey@olemiss.edu (University of Mississippi)
3. Parker Hardy pwhardy@go.olemiss.edu (University of Mississippi)

Article 12

LSOracle 2.0: Capabilities, Integration, and Performance

Abstract

LSOracle is a tool for logic synthesis which uses several directed acyclic graph representations concurrently when optimizing a design; for example a combination of And-Inverter Graphs and Majority-Inverter Graphs. Version 2.0 of LSOracle has recently been released. This paper describes the changes made in version 2.0 and presents recent benchmark results compared to earlier versions of the tool. Execution time has been reduced by a factor of ten with an accompanying 5-10\% improvement in area-delay product.

Authors

1. Scott Temple scott.temple@utah.edu (University of Utah)
2. Ashton Snelgrove ashton.snelgrove@utah.edu (University of Utah)
3. Walter Lau Neto walter.launeto@utah.edu (University of Utah)
4. Pierre-Emmanuel Gaillardon pierre-emmanuel.gaillardon@utah.edu (University of Utah)

Article 13

interact: An Interactive Design Environment for Asynchronous Logic

Abstract

We are developing an open-source EDA flow for asynchronous logic. We present the current state of the flow, where all the key components have been integrated into a single framework including the timer, partitioner, placer, power detailed router, and global router. We describe enhancements to the flow in terms of the class of circuits that can be handled, and extensions to support third-party libraries and flows.

Authors

1. Jiayuan He hejy@cs.utexas.edu (University of Texas at Austin)
2. Wenmian Hua wenmian.hua@yale.edu (Yale University)
3. Yi-Shan Lu yishanlu@cs.utexas.edu (University of Texas at Austin)
4. Sepideh Maleki smaleki@cs.utexas.edu (University of Texas at Austin)
5. Yihang Yang yihang.yang@yale.edu (Yale University)
6. Keshav Pingali pingali@cs.utexas.edu (University of Texas at Austin)
7. Rajit Manohar rajit.manohar@yale.edu (Yale University)

Article 14

Towards Fast and Accurate Parallel Chip Thermal Simulations with PACT

Abstract

Over the last few decades, chip temperature has become one of the most important criteria for designing high-performance, cost-effective, and reliable integrated circuits (ICs). Increased power consumption and temperature not only degrade the performance of a chip but also generate larger sub-threshold leakage power and cause reliability challenges. Therefore, thermal analysis is an essential procedure for designing any chip. Conventional thermal analysis relies on finite-element method (FEM) based multiphysics simulators (e.g., COMSOL and ANSYS). Such commercial simulators are computationally expensive and experience long solution times along with large memory requirements. These limitations make commercial simulators unsuitable for evaluating numerous design alternatives or runtime scenarios. Therefore, having fast and accurate thermal analysis is crucial for chip design and thermal optimization. In this paper, we discuss the key features of a SPICE-based PArallel Compact Thermal simulator (PACT) that achieves fast and accurate, standard-cell to architecture-level, steady-state and transient parallel thermal simulations.

Authors

1. Zihao Yuan yuan1z@bu.edu (Boston University)
2. Prachi Shukla prachis@bu.edu (Boston University)
3. Sofiane Chetoui sofiane_chetoui@brown.edu (Brown university)
4. Carlton Knox cknox@bu.edu (Boston University)
5. Sean Nemtzow snemtzow@bu.edu (Boston University)
6. Sherief Reda sherief_reda@brown.edu (Brown University)
7. Ayse K. Coskun acoskun@bu.edu (Boston University)

Article 15

FABulous: an Open-Everything Framework for Embedded FPGAs

Abstract

This paper presents the open-source embedded FPGA framework FABulous that is designed for ease-of-use and excellent quality of results in terms of logic density, performance, and power consumption. FABulous users can build a fabric from predefined tiles for logic, memory, arithmetic, and various IO. The tiles are stitched together in a Lego-like manner, as needed. Users can add custom tiles or customize the routing resources and most architectural details of the FPGA fabrics. Experienced designers can provide optimized cells for configuration storage or switching (e.g., pass transistor multiplexers, what we currently provide for TSMC 180nm and Skywater 130nm). Alternatively, FABulous can fall back to a standard cell design, which makes FABulous FPGAs easily portable across different technology nodes. Fabulous comes with unique features that are not available in other open-source FPGA frameworks like low power frame-wise reconfiguration and dynamic partial configuration. FABulous integrates several other open-source projects (Yosys, nextpnr, VPR, OpenLane, Verilator) to provide a full and open end-to-end user experience.

Authors

1. Bea Healy tabitha.healy@student.manchester.ac.uk (University of Manchester)
2. Jing Yu jing.yu@manchester.ac.uk (University of Manchester)
3. Nguyen Dao nguyen.dao@manchester.ac.uk (University of Manchester)
4. King Lok Chung king.chung@student.manchester.ac.uk (University of Manchester)
5. Dirk Koch dirk.koch@manchester.ac.uk (University of Manchester)

Article 16

Software Inspired IC Hardware Workflows Using Bazel

Abstract

Over the past 20 years a significant amount of development has gone into developer tooling to build software safely, and repeatedly. \emph{Bazel} is an open source build system designed from the ground up to accommodate highly variable language tool chains and massive software builds. This project aims to leverage that very same technology to offer software inspired workflows to build integrated circuits.

In this abstract session, I discuss the open source project hdl/bazel_rules_hdl which aims to use \emph{Bazel}, \emph{OpenROAD} , \emph{Yosys} and other open source tools to build a software like workflow that integrates synthesis, place and route, and verification into well defined build rule functions that can be easily run, distributed, and cached on multiple machines using the existing capabilities of Bazel.

Today hdl/bazel_rules_ hdl offers Bazel rules that will synthesize, place and route and run regression tests against the final placed and routed design. The regression tests allow you to set power and area thresholds on subblocks that cannot be exceeded without updating the thresholds, or modifying the problematic RTL.

These build rules give you the ability to setup software like presubmits that prevent RTL modifications that reduce the final PPA of the design, break the place and route or negatively impact synthesis. These types of workflows are common in the software model, but are novel in the hardware workflow space.

The long term goal of this project is that it enables users to run bazel test //mychip/... and bazel build //mychip:gds and in 10 minutes you have verified and emitted a fabricatable IC even for the most complex designs.

Article 17

Vezzal - a containerized tool to work with and test open source EDA tools

Abstract

Constant development of tools often breaks something internally which can lead to other issues. Hence there is a need to test the tool for its previous supporting features. But the tool needs an environment to get launched and good test cases to test the features. This problem can be solved by “Vezzal”. It is a docker containerised environment which is built completely from scratch, as shown in figure 1, which can be operated in two modes - user mode and test mode. In the test mode of Vezzal, the tool is provided with an environment supporting all dependencies like compilers, libraries etc., and a test cases database which could test the tool its core and supporting features with a very few inputs from the user. The testing can be done through the GitHub Actions feature to trigger the Vezzal because of any changes to the tool, thus supporting the continuous integration (CI) of tools. The CI workflow is shown in figure 2. Currently, the Vezzal is supporting the CI for Magic and Netgen tools at a basic level. In the user mode, Vezzal can be used to work with the supporting open-source EDA tools without worrying about the tool dependencies and can exercise them using the test cases database as examples. In addition to the main goal, Vezzal is designed to keep everything simple by following the KISS (KEEP IT SIMPLE, STUPID) principle to avoid any kind of usage restrictions, giving complete freedom to mould Vezzal according to the needs and requirements of the user. The CI feature offered by Vezzal couldn’t be possible without the docker technology, which is also employed by the OpenLane, and GitHub Actions. Many other tools will be added under user mode soon

Author

Sai Charan Lanka lankasaicharan@ieee.org (None)

Removed.

Article 19

Developing Open-Source Circuit Design and Flow Management Software

Abstract

The need for open-source tools for circuit design for custom silicon hardware has increased since the establishment of the Skywater open-source process design kit (PDK). This project aims to improve and extend existing software tools and scripts that help users with developing circuits; and to migrate the tools, which currently are mostly on the Efabless, Inc. platform, to a platform-independent, open environment. The project’s end goal is to improve the functionality of an existing project manager and provide intuitive software for managing circuit design flows. The flow manager guides users through a specific design process, integrating the PDK and tools and ensuring that all conditions are being met in the process. The project aims to support the analog, design, mixed-signal, and chip assembly flows, each of which has its own unique set of tools and steps.

Authors

1. Maxwell Chen maxwellfchen@gmail.com (Poolesville High School)
2. R. Timothy Edwards tim@efabless.com (Efabless)

Article 20

A Parallel HDL Compilation Framework

Abstract

We present LiveHD, a parallel HDL compiler to boost the HDL compilation throughput. The hierarchical dependency of the design is resolved internally in LiveHD without any pre-scan step on source files. We identify why and how LiveHD pass is compiled with full parallelism or a bottom-up scheme by referencing the design dependency relation. Our results show that when compiling the highest level of FIRRTL language, CHIRRTL, LiveHD is 1.7x faster than the FIRRTL compiler with single-threaded; and 3.1 to 5.48X faster when exploiting 2-5 threads.

Author

1. Sheng-Hong Wang swang203@ucsc.edu (University of California, Santa Cruz)
2. Sakshi Garg sgarg3@ucsc.edu (University of California, Santa Cruz)
3. Hunter James Coffman hcoffman@ucsc.edu (University of California, Santa Cruz)
4. Kenneth Mayer krmayer@ucsc.edu (University of California, Santa Cruz)
5. Jose Renau renau@ucsc.edu (University of California, Santa Cruz)

Article 21

OpenCache: An Open-Source OpenRAM Based Cache Generator

Abstract

Hardware caches are used in order to maximize the average latency of large memory blocks. The client logic is usually a CPU core but it may well be an application specific logic. However, designing a cache manually from scratch is difficult. In this paper, we describe OpenCache, an open-source parameterized IP core generator. OpenCache calls OpenRAM on the fly, while considering OpenRAM efficiency issues. The current version of OpenCache supports a single pipelined and in-order read-write port on the client side. It outputs a synthesizable Verilog module for cache logic and configuration files for OpenRAM to compile internal SRAM blocks holding data and tags of the generated cache.

Authors

1. Eren Dogan eren.dogan@ozu.edu.tr (Ozyegin University)
2. Hasan Fatih Ugurdag fatih.ugurdag@ozyegin.edu.tr (Ozyegin University)
3. Matthew Guthaus mrg@ucsc.edu (UC Santa Cruz)

Article 22

A Guide for Rapid Creation of New HDLs

Abstract

We present a guide for quickly building and testing a new HDL. Upcoming HDLs have a compiler designed specifically for each of them, which means duplicated efforts. The proposed guidelines minimize these efforts. New language developers can leverage existing compiler infrastructures to interface with the new HDL. This interfacing would enable developers to use LEC without any reference compiler. The proposed method also leads to converting the newly developed HDL to any other language supported by the interfaced compiler. Also, this system would ensure higher trust in the language and the interfaces.

Authors

1. Sakshi Garg sgarg3@ucsc.edu (University of California, Santa Cruz)
2. Sheng-Hong Wang swang203@ucsc.edu (University of California, Santa Cruz)
3. Hunter James Coffman hcoffman@ucsc.edu (University of California, Santa Cruz)
4. Jose Renau renau@ucsc.edu (University of California, Santa Cruz)

Article 23

ESSENT: A High-Performance RTL Simulator

Abstract

RTL simulation is a critical tool for hardware development, debugging, design space exploration, and verification. The slow speed of hardware simulation can often be a bottleneck for the design process, so any speed improvements could either reduce design times or improve design quality. We overview ESSENT, a high-performance RTL simulator available as open-source. Not only does it contain novel optimizations that make it typically faster than other software RTL simulators, the codebase can serve as a foundation for simulation research.

Authors

1. Scott Beamer sbeamer@ucsc.edu (UC Santa Cruz)
2. Thomas Nijssen tnijssen@ucsc.edu (UC Santa Cruz)
3. Krishna Pandian kpandian@ucsc.edu (UC Santa Cruz)
4. Kyle Zhang kmzhang@ucsc.edu (UC Santa Cruz)