Workshop on Open Source Hardware Development Tools and...

71
Workshop on Open Source Hardware Development Tools and RISC-V MohammadHossein AskariHemmat Shahid Bahonar University of Kerman August 24, 2017 MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 1 / 71

Transcript of Workshop on Open Source Hardware Development Tools and...

Page 1: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Workshop on Open Source Hardware Development Toolsand RISC-V

MohammadHossein AskariHemmat

Shahid Bahonar University of Kerman

August 24, 2017

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 1 / 71

Page 2: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Agenda

1 Open Source ToolsHistory of Free and Open Source SoftwareOpen Source SoftwaresOpen Source Softwares for Hardware DevelopmentDemo: Open-Source Tools for Lattice FPGA DevelopmentLab1: Working with Open Source Hardware Development Tools

2 Working with Chisel and RISC-VWhy we need new hardware description language?What is functional programming?Scala and Chisel short introChisel Demo: Full AdderLab2: Working with ChiselRISC-V IntroRISC-V Standard Base ISA DetailsRISC-V DemoLab3: RISC-V Lab

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 2 / 71

Page 3: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

History of Open Source Tools

In early 1970 UNIX operating system was developed by KennethThompson (Berkeley), Dennis Ritchie (Harvard) in AT&T Bell Labs

UNIX came with no cost for researchers BUT no permission forredistribution was given

Under UNIX terms, you were not even allowed to distribute amodified version of UNIX!

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 3 / 71

Page 4: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

History of Open Source Tools

In 1984 Richard Stallmans Free Software Foundation (FSF) began theGNU project

The objective was to create a free version of UNIX operating systemnamely GNU operating system

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 4 / 71

Page 5: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

History of Open Source Tools

In 1984 Richard Stallmans Free Software Foundation (FSF) began theGNU project

The objective was to create a free version of UNIX operating systemnamely GNU operating system

By free, he meant a software that can be freely used, read, modified,and redistributed

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 5 / 71

Page 6: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

History of Open Source Tools

GNU Project is the base of many tools that we currently use!

Some of the GNU tools that you might have heard of:

GCC: GNU Compiler Collection which is a suite of compilers for severalprogramming languagesGDB: GNU DeBuggerGNU Binutils: A suite of tools including linker, assembler and othertoolsAnd a lot more: Autoconf, Make, Bison ...

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 6 / 71

Page 7: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

History of Open Source Tools

By 1991, the only missing part for GNU Project to be a full operatingsystem was the kernel

In 1991, Linus Torvalds, began working on an operating system kernel

His Kernel was able to be combined with FSF components to producea usable operating system

He named this combination Linux

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 7 / 71

Page 8: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

History of Open Source Tools

The name Linux is confused by many to be an operating system

Yet, Linux is only the kernel

Many use the term Gnu/Linux to point out that Linux is only thekernel and it needs GNU tool chain to be a fully usable

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 8 / 71

Page 9: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

History of Open Source Tools

Nowadays, all big companies such as Google, Microsoft, Facebook andmany more are promoting their users to use their Open Source products

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 9 / 71

Page 10: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

History of Open Source Tools

As an example, currently, Google has 1055 repositories on Github some ofwhich you use everyday!

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 10 / 71

Page 11: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Open Source Softwares

Free Software was defined by FSF and it is often confused withprograms whose executables are given away at no charge

The other miss understanding is that the term ”Open Source” isoften replaced with ”Free Software” and vice-versa

Any Free Software, by definition, is an Open Source where theopposite may not be valid

Distributing a program under the name of Free Software adds moremoral aspects to your program

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 11 / 71

Page 12: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Open Source Softwares

So What is an Open Source software?

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 12 / 71

Page 13: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Open Source Softwares

According to OpenSource.org, an Open Source software has the followingcriteria:

The user must be free to redistribute it

The source code must be available

The license must allow modifications and derived works, and mustallow them to be distributed under the same terms as the license ofthe original software

The full list of criteria can be found here:https://opensource.org/osd.html

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 13 / 71

Page 14: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Open Source Softwares

Benefits of using Open Source tools:

Customizability

Auditability

Cost

Security

Hidden costs of using Open Source tools:

Long learning curve

Semi-restrictive Licenses

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 14 / 71

Page 15: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Open Source Softwares

Read more about Open Source and Free Software:

https://opensource.org/

http://www.fsf.org/

https://en.wikipedia.org/wiki/GNU Project

https://www.gnu.org/

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 15 / 71

Page 16: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Open Source Softwares for Hardware Development

Unfortunately, there is not much interest in Open Source tools forHardware Development:

CAD companies like Cadence and Synopsys do not promote usingopen source tools for hardware development

Almost all CAD tools used by silicon vendors are proprietary andrequires expensive license agreement

Researches around the world use proprietary tools which requireexpensive license agreement

Sharing source code and releasing tools as open source is not acommon practice at all

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 16 / 71

Page 17: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Open Source Softwares for Hardware Development

BUT, there is hope!

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 17 / 71

Page 18: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Open Source Softwares for Hardware Development

There are open source solutions for FPGA and ASIC development.

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 18 / 71

Page 19: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Open Source Softwares for Hardware Development

Icarus Verilog:

Icarus Verilog is a Verilog simulation and synthesis tool

It is developed and maintained by Stephen Williams

Aimed to generate code by back-end tools (for example chisel)

It does not fully support Systemverilog

It is an open source tool under GPL

Project page: http://iverilog.icarus.com/

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 19 / 71

Page 20: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Open Source Softwares for Hardware Development

Veripool:

Veripool was established in 1998 as a repository of the authors’ ASICand electrical engineering tools

A collection of open source tools for ASIC development for example:

Verilator is the fast Verilog to C/C++/SystemC compilerFull list: https://www.veripool.org/projects

It is an open source project licensed under GPL

Project page: https://www.veripool.org/

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 20 / 71

Page 21: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Open Source Softwares for Hardware Development

GTKWave:

A fully featured GTK+ based wave viewer

It is published as a free software

Project page: http://gtkwave.sourceforge.net/

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 21 / 71

Page 22: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Open Source Softwares for Hardware Development

Chisel:

Constructing Hardware in a Scala Embedded Language

Chisel is an open source hardware construction language developedat UC Berkeley

Project page: https://chisel.eecs.berkeley.edu/

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 22 / 71

Page 23: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Open Source Softwares for Hardware Development

MyHDL:

MyHDL is a free, open source package for using Python as ahardware description and verification language

MyHDL converts design to Verilog or VHDL

Project page: http://myhdl.org/

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 23 / 71

Page 24: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Open Source Softwares for Hardware Development

Tools developed by Clifford Wolf:

YOSYS: A framework for RTL synthesis tools

Project IceStorm: Lattice iCE40 FPGAs Bitstream Documentation(Reverse Engineered)

riscv-formal: RISC-V Formal Verification Framework

Projects page: https://github.com/cliffordwolf

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 24 / 71

Page 25: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Demo: Open-Source Tools for Lattice FPGA Development

In this demo, I will go through synthesis and implementation of a simpledesign on a Lattice FPGA

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 25 / 71

Page 26: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Lab1: Working with Open Source Hardware DevelopmentTools

Follow instructions here

https://goo.gl/LctK9W

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 26 / 71

Page 27: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Why we need new hardware description language?

Existing HDLs (Verilog/VHDL) are too low-level and closed source

Depending on tool vendor, new HDLs such as Systemverilog andBluespec have different language support

Simulation languages such as SystemC are too far from synthesis

Bluespec is closed source but high-level

High Level Synthesis (HLSs) are ineffective for many domains

Chisel have solved these problems

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 27 / 71

Page 28: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Chisel is open source!

Chisel source code is freely available and anyone can contribute to theproject: https://github.com/ucb-bar/chisel

Researchers are highly recommended to contribute to the project.

Chisel has a Google user group, Join! https://goo.gl/EPnhnp

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 28 / 71

Page 29: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Chisel is embedded in the Scala programming language

Traditional HDLs, do not use the most user friendly syntax. They alsolack many advanced features that are currently adopted by manyadvanced languages such as object oriented, abstract data types,functional construction and etc...

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 29 / 71

Page 30: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Ability to choose different back-ends

With a single Chisel source code, you can choose the back-end forimplementation

The generated code from chisel is compatible to be used by anystandard ASIC or FPGA tools

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 30 / 71

Page 31: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Chisel features

A full list of Chisel features can be found here:https://chisel.eecs.berkeley.edu/

Learn more on why to learn Chisel:https://goo.gl/44LzgZ

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 31 / 71

Page 32: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Chisel Pre-requisites

Unfortunately, Chisel has long learning curve and previous to learn Chisel,users need to know the following technologies:

Object Oriented Programming: Inheritance, Abstract classes,Interfaces, Parameterization and Polymorphism

Functional Programming: Higher-order functions, Recursion, Curryingetc.

Ability to design and understand RTL in any HDL

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 32 / 71

Page 33: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Chisel Pre-requisites

Usually, people with hardware design experience lack knowledge inFunctional and Object Oriented Programming. The following are a goodsource for learning these pre-requisite:

For Scala you can take this online course on Coursera:https://www.coursera.org/learn/progfun1

For Object Oriented Programming, you take any advancedprogramming course. This one is in Farsi:https://maktabkhooneh.org/course/bazargan466

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 33 / 71

Page 34: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

What is functional programming?

What is functional programming?

In functional programming, programs are executed by evaluatingexpressions, in contrast with imperative programming where programsare composed of statements which change global state when executed.

Functions are first class citizens (like any variable in other type ofprogramming languages)This means that you can pass and return functions. This is calledHigher Order Functions in Functional programming

There are other features that defines Functional Programming. For nowwe only rely on above features

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 34 / 71

Page 35: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Scala and Chisel short intro

The following slides are copied from Chisel Bootcamp which can be found here:https://chisel.eecs.berkeley.edu/latest/chisel-bootcamp.pdf

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 35 / 71

Page 36: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Scala Bindings

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 36 / 71

Page 37: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Scala Iteration

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 37 / 71

Page 38: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Scala Functions

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 38 / 71

Page 39: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Scala Functional

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 39 / 71

Page 40: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Scala Object Oriented

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 40 / 71

Page 41: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Scala Singleton Objects

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 41 / 71

Page 42: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Scala, Things You Should Know

Refer to the following wiki to know what you need to know from Scalabefore working with Chisel:

https://goo.gl/CCETuC

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 42 / 71

Page 43: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Chisel VS Scala

Chisel is a Scala library

Do not use var unless you are professional Chisel user and you areworking on Chisel source code!

Complete list can be found here:https://github.com/freechipsproject/chisel3/wiki/Scala-land-vs.-Chisel-land

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 43 / 71

Page 44: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Using Constructional Blocks

There are three constructional blocks that are frequently used in Chisel:

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 44 / 71

Page 45: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Algebraic Graph Construction

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 45 / 71

Page 46: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Creating Module

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 46 / 71

Page 47: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Connecting Module

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 47 / 71

Page 48: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Defining Construction Functions

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 48 / 71

Page 49: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Functional Construction

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 49 / 71

Page 50: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Using Registers

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 50 / 71

Page 51: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Unconditional Register Update

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 51 / 71

Page 52: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Conditional Register Update

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 52 / 71

Page 53: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Chisel Cheat Sheet

You can find chisel cheat sheet here:https://chisel.eecs.berkeley.edu/2.2.0/chisel-cheatsheet.pdf

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 53 / 71

Page 54: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Chisel Demo: Full Adder

Let’s Design a Full adder in Chisel! The following code is in Chisel2, notcompatible with docker image.

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 54 / 71

Page 55: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Lab2: Working with Chisel

Follow instructions here

https://goo.gl/xEpiQM

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 55 / 71

Page 56: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

RISC-V intro

At Berkeley, in 2010, after many years and many projects using MIPS,SPARC, and x86 as basis of research, it was time to look at ISA fornext set of projects

Obvious choices: x86 and ARM

x86 is too complex and ARM has lots of IP issues (story time!)

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 56 / 71

Page 57: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Some of RISC-V platinum members

RISC-V has attracted many companies

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 57 / 71

Page 58: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Who are the key people working on this project?

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 58 / 71

Page 59: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Intel x86 AAA Instruction

ASCII Adjust after Addition

AL register is default source and des/na/on

If the low nibble is >9 decimal, or the auxiliary carry flag AF = 1,then

Add 6 to low nibble of AL and discard overflowIncrement high byte of ALSet CF and AF

Else

CF = AF = 0

Single byte instruction

Totally useless!

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 59 / 71

Page 60: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

What is RISC-V?

A new free and open ISA developed at UC Berkeley starting in 2010(ParLab and ASPIRE)

It is a FREE ISA (as in free software)

Designed for

researcheducationcommercial use

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 60 / 71

Page 61: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Whats Different about RISC-V?

Simple

Far smaller than other commercial ISAs

Clean-slate design

Clear separation between user and privileged ISAAvoids micro architecture or technology-dependent features

A modular ISA

Small standard base ISAMultiple standard extensions

Stable

Base and standard extensions are frozenAdditions via optional extensions, not new versions

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 61 / 71

Page 62: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Whats Different about RISC-V?

RISC-V has reduced IP licensing much simpler. As an example, on SiFivewebsite, you can buy an IP based on RISC-V in a matter of minutes!

The process is much longer and much more expensive if other ISAs (x86 orARM) is chosen

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 62 / 71

Page 63: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

RISC-V is NOT an Open-Source Processor!

RISC-V is an ISA specification

Want to encourage both open-source and proprietary implementationsof the RISC-V ISA specification

Most of cost of hardware design is software, so make sure softwarecan be reused across many chip designs

Expand to have open specifications for whole platforms, including I/Oand accelerators

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 63 / 71

Page 64: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

RISC-V Standard Base ISA Details

32-bit fixed-width, naturally aligned instructions

31 integer registers x1-x31, plus x0 zero register

rd/rs1/rs2 in fixed location, no implicit registers

Immediate field (instr[31]) always sign-extended

Floating-point adds f0-f31 registers plus FP CSR, also fused mul-addfour-register format

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 64 / 71

Page 65: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

ARMv8 ISA VS RISC-V ISA

Copied from risc-v workshop 2

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 65 / 71

Page 66: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

RISC-V is not a toy!

In fact risc-v is now commercially available!

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 66 / 71

Page 67: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Where to start?

You can start by reading RISC-V ISA:https://riscv.org/specifications/

Then, you start studying simple implementations:riscv-mini is highly recommended

You can then read other implementations. Just search for risc-v onGithub! Here are a few:

RocketChip projectPulPinopicorv32and many more, just search!

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 67 / 71

Page 68: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

RISC-V is great for research

RISC-V is a great option for researchThe ISA is free to use and openThere are upcoming courses based on risc-vThe new Paterson Book is on RISC-V

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 68 / 71

Page 69: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

RISC-V Demo

Booting Linux On RISC-V on ZYBO

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 69 / 71

Page 70: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

Lab3: RISC-V Lab

Follow instructions here

https://goo.gl/QVqwmq

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 70 / 71

Page 71: Workshop on Open Source Hardware Development Tools and …hossein1387.github.io/.../files/riscv-presentation.pdf · 2019-11-01 · Workshop on Open Source Hardware Development Tools

The End

MohammadHossein AskariHemmat Workshop on RISC-V August 24, 2017 71 / 71