Chisel HDL STEVEN CLUKEY APRIL 30 2015 Outline

  • Slides: 10
Download presentation
Chisel HDL STEVEN CLUKEY APRIL 30, 2015

Chisel HDL STEVEN CLUKEY APRIL 30, 2015

Outline 1. What is Chisel? 2. Design flow 3. Benefits of Chisel 4. Alternatives

Outline 1. What is Chisel? 2. Design flow 3. Benefits of Chisel 4. Alternatives 5. Why I want to use Chisel

What is Chisel? Chisel is a hardware construction language ◦ Created at UC Berkeley

What is Chisel? Chisel is a hardware construction language ◦ Created at UC Berkeley released in 2012 ◦ It is a "hardware construction language" ◦ Not "high-level" like C to Gates ◦ It makes large use of parameterization ◦ It is a domain specific language written in Scala ◦ Scala is an object-functional language ◦ It runs in the JVM, and Java functions are available, but not synthesizable ◦ The Scala/Java functions can be used to create very good testbenches ◦ Scala is used to build the lower level objects, the Scala is not directly synthesizable. ◦ Creates cycle-accurate simulations

Design flow CPU Chisel Code Chisel Simulator Verilog IP Core Verilog Synthesis Vivado Project

Design flow CPU Chisel Code Chisel Simulator Verilog IP Core Verilog Synthesis Vivado Project Synthesis and Implementation Hardware Verification FPGA

Benefits of Chisel 1. It is low-level enough to allow full control 2. It

Benefits of Chisel 1. It is low-level enough to allow full control 2. It has high-level facilities like objects, supports extensive parameterization 3. Test benches are implemented in full Scala/Java, so they can are easy, fast, and high-level 4. The testing is done in cycle-accurate C, making it fast and very accurate. 5. It is vendor-independent 1. Though this does mean leaving off vendor-specific optimizations 6. It is open source 7. It being actively developed and maintained (17 commits to master in April already)

Alternatives to Chisel Vivado HLS ◦ High level ◦ Uses C/C++ ◦ Moderate available

Alternatives to Chisel Vivado HLS ◦ High level ◦ Uses C/C++ ◦ Moderate available imaging library My. HDL ◦ Python based ◦ Not high level, very similar to Chisel ◦ No publically available imaging library MATLAB Vision HDL Toolbox ◦ High level ◦ Limited function library (though custom functions can be written) ◦ Very new and different from the others Others - System. C, Bluespec, Genesis 2, Lava, AHDL, Cx, etc.

A note on High-Level Synthesis From the document “BSV by Example” by Rishiyur S.

A note on High-Level Synthesis From the document “BSV by Example” by Rishiyur S. Nikhil and Kathy R. Czeck: High-Level Synthesis (HLS) from C++ and System. C is often held out by many in the industry as a potential way forward. Unfortunately there are serious problems in using C++ and System. C as a starting point. A central issue is architecture, architecture. the key to high-performance hardware (measured as area, speed, power) is good architecture. Hence, it is crucial to give designers the maximum power to express architecture; all the rest can be left to tools. Unfortunately, HLS from C++ does exactly the opposite -- it obscures architecture. HLS from C++ has another serious limitation. It is fundamentally an exercise in "automatic parallelization"

Alternatives to Chisel HLS and MATLAB are the only two truly high-level implementation I

Alternatives to Chisel HLS and MATLAB are the only two truly high-level implementation I have seen All others attempt to improve low-level descriptions ◦ Improve simulation ◦ Simplify syntax ◦ Modularize and Parameterize Compared to My. HDL ◦ ◦ Python vs Scala/Java Explicit typing in Chisel is better My. HDL seems like clumsy add-ons to Python Chisel has cycle-accurate simulation

Alternatives to Chisel Compared to HLS ◦ ◦ HLS is high-level, Chisel is not

Alternatives to Chisel Compared to HLS ◦ ◦ HLS is high-level, Chisel is not HLS is vendor-locked, but well supported by Xilinx HLS pragmas are difficult to figure out (guess and try is the method of choice for optimization pragmas) HLS uses C++, but generic C++ will rarely be directly useable Compared to MATLAB ◦ MATLAB is high-level, Chisel is not ◦ I would need to test to learn more

Why I want to use Chisel 1. I truly don't believe high-level synthesis is

Why I want to use Chisel 1. I truly don't believe high-level synthesis is the next step in hardware design, I believe it is a low-level language that provides large libraries of available functions 1. 2. CPU languages didn't go straight from assembly to Python. Similarly, the next step in hardware design languages is still low-level C, without the C standard library or POSIX , is very difficult to use. Even Python, without its "batteries", would be dead 2. I get to learn about low-level design without the hassle of low-level design ◦ ◦ Simulation is easy and fast Knowledge translates to Verilog 3. It is new ◦ New things have risks, but old things are boring, and Chisel can be the future if it is built up 4. Further community addition to the language will only help it grow