63
Digital Electronics 2: Introduction Martin Schoeberl Technical University of Denmark Embedded Systems Engineering February 6, 2020 1 / 63

Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Digital Electronics 2: Introduction

Martin Schoeberl

Technical University of DenmarkEmbedded Systems Engineering

February 6, 2020

1 / 63

Page 2: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Overview

I Motivation and the digital abstractionI Course organizationI Languages for digital hardware designI A first round of ChiselI Tools and tool setup

2 / 63

Page 3: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

A BIG Chip

I https://singularityhub.com/2019/08/26/this-giant-ai-chip-is-the-size-of-an-ipad-and-holds-1-2-trillion-transistors/

I 1.2 × 1012 transistorsI If you design 1 gate (= 4 transistors) per second

I It takes you 10 thousand years!I This calls for some abstraction

3 / 63

Page 4: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Digital Systems are Everywhere

I Digital systems are all over in our liveI No more analog mediaI CD, mobile phone, TV, DVD,... all digital nowI Analog circuits only at the edgeI The rest is processed in digitalI If performance allows, functions are moved to softwareI But processor speedup has slowed downI Algorithms are moved back into hardware

4 / 63

Page 5: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

FPGAs in the Cloud

I High performance algorithm in an FPGAI An FPGA in the cloudI Intel offers FPGAs for servers

I There was some reason why Intel bought AlteraI We need digital designers to make this workI A good time to be a digital designer

5 / 63

Page 6: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

The Digital Abstraction

I Just two values: 0 and 1,or low and hight

I Represented as voltageI Digital signals tolerate

noiseI Digital Systems are simple,

just:I Combinational circuits

andI Registers

AND

OR

ba

clogic

D Q

clock

6 / 63

Page 7: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Hardware Design in DK

I Demant (former Oticon)I WidexI GN ReSoundI MicrosemiI Intel (former Altera) DenmarkI probably some more...I

I They are all hiring

7 / 63

Page 8: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Example Design from Microsemi DK

A picture of the board with the $50k Xilinx FPGA. This is a newboard and is developed for ASIC prototyping in order to dopre-silicon validation as well as SW development. We have onthe board currently mapped our current project: 8port industrialgigabit Ethernet switch with full TSN, CPU system ARM A7 withDDR, USB, PCIe and hardware security engines (SHA, AES)for secure boot of Linux and on the fly DRAM encryption. Wescale and map all the digital logic to the FPGA.I Show the picture

8 / 63

Page 9: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Digital Design within an EE Master

I Not an obvious choice, as there is no specialization indigital systems

I Select some of the following coursesI 02155: Computer Architecture and EngineeringI 02203: Design of Digital SystemsI 02211: Advanced Computer ArchitectureI 02205: VLSI DesignI 02217: Design of Arithmetic ProcessorsI 02204: Design of Asynchronous CircuitsI 02209: Test of Digital Systems

9 / 63

Page 10: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Computer Engineering Education at DTU

I On the border between hardware and softwareI Very well payed jobs :-)I Not an easy choice at DTU as well

I No BSc availableI Between EE and CS

I Start with Bsc. in EEI Specialization in Indlejrede systemer og programmering

I 02155: Computer Architecture and EngineeringI 02105: Algoritmer og datastrukturer

I Continue as MSc. in Computer Science and EngineeringI Specialization in

I Digital SystemsI Embedded and Distributed Systems

10 / 63

Page 11: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Web Resources

I DTU InsideI Vending machine documentI Project report hand in

I Course websiteI General information, starting point

I Lab websiteI Lab material on GitHub

I Chisel book websiteI Download the free PDF

11 / 63

Page 12: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Organization and Workload

I Usually 2 hours lectures and 2 hours supervised labI 5 ECTS is equivalent to 9 hours per weekI That means 5 hours work on your own

I Do some reading, prepare for the lecture and labI Get the tools installed on your laptopI You have an FPGA board, experiment with it

I You will learn a lot in this course, it will make you a better:I engineerI hardware designerI programmer, andI computer user in general

I Try to have fun with building stuff that is real!

12 / 63

Page 13: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Communication and Getting Help

I Several sources of information:I The Internet, Google, and StackoverflowI Your fellow students (e.g., via Slack)I The TAs: Simon, Kasper, and AnthonI Me

I We will use Slack for easy communication (if ok for you)I https://de2019.slack.com/

I You can always just knock on my door or shoot me anemail

I There is also anonymous feedback

13 / 63

Page 14: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Anonymous Feedback

I Inbox available at: Anonymous InboxI Simple Google form without revealing your identityI I will get notified by an emailI Use when you want to complain, give feedback, but also

when you like something ;-)I Even when frustrated, please be polite, a human is reading

this

14 / 63

Page 15: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Cheating and Plagiarism

I It is ok and good practice to discuss problems andsolutions with your fellow students

I But you need to hand in your own solutionI Copying stuff or offering stuff for copying is cheatingI Copying material from somewhere is plagiarism and

copyright violationI Cheating is handled quite rigorous at DTU, you might get

expelledI Using source code control (GitHub) is good practiceI However, keep it private. Otherwise you might contribute to

cheating

15 / 63

Page 16: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

This is an Open-Access/Open-Source Course

I Almost all material is public visibleI Slides are open accessI Lab material is open accessI Hosted on GitHub

I You can contribute with a pull requestI Becoming an author of this course :-)

I The Chisel book is freely available

16 / 63

Page 17: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Lab Work

I Some paper and pencil exercisesI Most work on designing digital circuits with a hardware

description languageI Builds up to the final project: a vending machineI The vending machine and the report are graded

17 / 63

Page 18: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

A Vending Machine from 1952

Source: Minnesota Historical Society, CC BY-SA 2.0

18 / 63

Page 19: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

The Vending Machine

I Final project is a vending machineI Inputs: coins, buyI Display: price and current ammountI Output: release can or errorI Small challenge to multiplex the displayI State machine with data path is the brain of the VMI Will be guided step by step over several weeksI More details next weekI VM in hardware versus VM in software

I This is an exercise that you can solve with reasonable effort

19 / 63

Page 20: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Motivating Example for Chisel:Lipsi: Probably the Smallest Processor in the World

I Tiny processorI Simple instruction setI Shall be small

I Around 200 logic cells, one FPGA memory blockI Hardware described in ChiselI Available at https://github.com/schoeberl/lipsiI Usage

I Utility processor for small stuffI Could be used for your vending machineI In teaching for introduction to computer architecture

I The design took place on the island Lipsi

20 / 63

Page 21: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

The Design of Lipsi on Lipsi

21 / 63

Page 22: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Lipsi Implementation

I Hardware described in ChiselI Tester in ChiselI Assembler in Scala

I Core case statement about 20 linesI Reference design of Lipsi as software simulator in ScalaI Testing:

I Self testing assembler programsI Comparing hardware with a software simulator

I All in a single programming language!I All in a single programI How much work is this?

22 / 63

Page 23: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Chisel is Productive

I All coded and tested in less than 14 hours!

I The hardware in ChiselI Assembler in ScalaI Some assembler programs (blinking LED)I Simulation in ScalaI Two testers

I BUT, this does not include the design (done on paper)

23 / 63

Page 24: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Motivating Example: Lipsi, a Tiny Processor

I Show in IntelliJ (if beamer allows)

24 / 63

Page 25: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

The Slides are Online

I http://www2.imm.dtu.dk/courses/02139/

I https://github.com/schoeberl/chisel-book/tree/master/slides

25 / 63

Page 26: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Why Chisel Instead of VHDL/Verilog/SystemVerilog?

I Company O does Verilog, company W does VHDLI Why Chisel?

I We learn principles of digital design, not toolsI We pick a language that is modern and productive

I When knowing principles, switching the language is amatter of a week

I You are the future engineers and shall learn new toolsI You may then bring Chisel into the company

26 / 63

Page 27: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

More on Chisel Success Stories

I Last week at CCC 2020 in silicon valleyI 90 participantsI More than 30 different chip companies presentI Several companies are looking into ChiselI IBM did an open-source PowerPCI SiFive is a RISC-V startup success

I High productivity with ChiselI Open-source Rocket chip

I Esperanto uses the BOOM processor in ChiselI Google did a machine learning processorI Intel is looking at ChiselI Chisel is open-source, if there is a bug you can fix it

I You can even contribute to the Chisel ecosystem :-)

27 / 63

Page 28: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Introduction to Chisel

I Get an idea what Chisel isI Will show you code snippets

I Basic hardware constructs in ChiselI Pointers to more informationI Have your first Chisel design running in an FPGA!

I From 0 to 100 in one afternoon

28 / 63

Page 29: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Chisel

I A hardware construction languageI Constructing Hardware In a Scala Embedded LanguageI If it compiles, it is synthesisable hardwareI Say goodby to your unintended latches

I Chisel is not a high-level synthesis languageI Single source for two targets

I Cycle accurate simulation (testing)I Verilog for synthesis

I Embedded in ScalaI Full power of Scala availableI But to start with, no Scala knowledge needed

I Developed at UC Berkeley

29 / 63

Page 30: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

The C Language Family

C

Verilog

SystemVerilog

C++

SystemC

Java

Scala

Chisel

C#

30 / 63

Page 31: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Other Language Families

Algol 68

Ada

VHDL

Python

MyHDL

31 / 63

Page 32: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Some Notes on Scala

I Object orientedI FunctionalI Strongly typed

I With very good type inferenceI Could be seen as Java++I Compiled to the JVMI Good Java interoperability

I Many libraries availableI You can write your testing code in Java

32 / 63

Page 33: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Chisel vs. Scala

I A Chisel hardware description is a Scala programI Chisel is a Scala libraryI When the program is executed it generates hardwareI Chisel is a so-called embedded domain-specific language

33 / 63

Page 34: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

A Small Language

I Chisel is a small languageI On purposeI Not many constructs to rememberI The Chisel Cheatsheet fits on two pagesI The power comes with Scala for circuit generatorsI With Scala, Chisel can grow with you

34 / 63

Page 35: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Tool Flow for Chisel Defined Hardware

Hello.scala

scalac

Hello.class

ChiselJVM

Hello.fir

scala.libchisel3.lib

Verilog Emitter

JVMTreadle

JVM

Hello.vHello.vcd

FIRRTLJVM

Chisel TesterJVM

good/bad

GTKWave CircuitSynthesis

Hello.bit

35 / 63

Page 36: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Signal Types

I All types in hardware are a collection of bitsI The base type in Chisel is BitsI UInt represents an unsigned integerI SInt represents a signed integer (in two’s complement)

Bits(8.W)

UInt(8.W)

SInt(10.W)

36 / 63

Page 37: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Number of Bits: n.W

I A collection of bits has a widthI The width is the number of bitsI Is written as number followed by .WI Following example shows the width of n

n.W

Bits(n.W)

37 / 63

Page 38: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Constants

I Constants can represent signed or unsigned numbersI We use .U and .S to distinguish

0.U // defines a UInt constant of 0

-3.S // defines a SInt constant of -3

I Constants can also be specified with a width

8.U(4.W) // An 4-bit constant of 8

38 / 63

Page 39: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Hexadecimal and Binary Representation

I We can specify constants with a different baseI May come handy sometimes

"hff".U // hexadecimal representation of

255

"o377".U // octal representation of 255

"b1111_1111".U // binary representation of 255

39 / 63

Page 40: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Boolean Values

I Type for logical valuesI Can be true or falseI Almost exchangeable with UInt(1.W)I Sometimes a signal, such as valid, may be better

represented by a Boolean type

Bool()

true.B

false.B

40 / 63

Page 41: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Combinational Circuits

I Chisel uses Boolean operators, similar to C or JavaI & is the AND operator and | is the OR operatorI The following code is the same as the schematicsI val logic gives the circuit/expression the name logicI That name can be used in following expressions

AND

OR

ba

clogic

val logic = (a & b) | c

41 / 63

Page 42: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Standard Logic Operations

val and = a & b // bitwise and

val or = a | b // bitwise or

val xor = a ˆ b // bitwise xor

val not = ˜a // bitwise negation

I Note that we do not need to define the width of the valuesI Note also that this is hardwareI All expressions are evaluated in parallelI Order does not matter

42 / 63

Page 43: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Arithmetic Operations

I Same as in Java or CI The width of the result is automatically computedI E.g., the width of the multiplication is the sum of the width

of a and the width of b

val add = a + b // addition

val sub = a - b // subtraction

val neg = -a // negate

val mul = a * b // multiplication

val div = a / b // division

val mod = a % b // modulo operation

43 / 63

Page 44: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Wires

I A signal (or wire) can be first definedI And later assigned an expression with :=

val w = Wire(UInt())

w := a & b

44 / 63

Page 45: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Chisel Defined Hardware Operators

Operator Description Data types

* / % multiplication, division, modulus UInt, SInt+ - addition, subtraction UInt, SInt=== =/= equal, not equal UInt, SInt, returns Bool> >= < <= comparison UInt, SInt, returns Bool<< >> shift left, shift right (sign extend on SInt) UInt, SInt˜ NOT UInt, SInt, Bool& | ˆ AND, OR, XOR UInt, SInt, Bool! logical NOT Bool&& || logical AND, OR Bool

45 / 63

Page 46: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Subfields and Concatenation

A single bit can be extracted as follows:

val sign = x(31)

A subfield can be extracted from end to start position:

val lowByte = largeWord(7, 0)

Bit fields are concatenated with Cat:

val word = Cat(highByte, lowByte)

46 / 63

Page 47: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

A Multiplexer

ay

sel

b

I A Multiplexer selects between alternativesI So common that Chisel provides a construct for itI Selects a when sel is true.B otherwise b

val result = Mux(sel, a, b)

47 / 63

Page 48: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Conditional Update

I With when we can express a conditional updateI The resulting circuit is a multiplexerI In contrast to the Mux component, we can have several

assignments in the when blockI The rule is the the last enabled assignment counts

I Here the order of statements has a meaning

val w = Wire(UInt())

w := 0.U

when (cond) {

w := 3.U

}

48 / 63

Page 49: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

The World of Combinational Logic

I With the shown operations (logic, arithmetic, Mux) allpossible combinational circuits can be described

I Even the Mux is already syntactic sugarI A Mux is basically: (a & sel) | (b & !sel)

I But Chisel provides further constructs for more elegantdescription of circuits

I Stay tuned!

49 / 63

Page 50: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Register

I A register is a collection of flip-flopsI Updated on the rising edge of the clockI May be set to a value on resetI Clock and reset are implicitly connected to the registerI A register can be any Chisel type that can be represented

as a collection of bits

50 / 63

Page 51: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

A Register with Reset

D Q

reset

d

0 q

clock

51 / 63

Page 52: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

A Register with Reset

Following code defines an 8-bit register, initialized with 0 atreset:

val reg = RegInit(0.U(8.W))

An input is connected to the register with the := updateoperator and the output of the register can be used just with thename in an expression:

reg := d

val q = reg

52 / 63

Page 53: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Hello World in Chisel

class Hello extends Module {

val io = IO(new Bundle {

val led = Output(UInt(1.W))

})

val CNT_MAX = (50000000 / 2 - 1).U;

val cntReg = RegInit(0.U(32.W))

val blkReg = RegInit(0.U(1.W))

cntReg := cntReg + 1.U

when(cntReg === CNT_MAX) {

cntReg := 0.U

blkReg := ˜blkReg

}

io.led := blkReg

}

53 / 63

Page 54: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Chisel is a Hardware Construction Language

I The code I showed you looks much like Java codeI But it is not a program in the usual senseI It represents a circuitI The “program” constructs the circuitI All statements are “executed” in parallelI Statement order has mostly no meaning

54 / 63

Page 55: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Free Tools for Chisel and FPGA Design

I Java OpenJDK 8 already installed for Java courseI sbt, the Scala (and Java) build toolI IntelliJ (the free Community version)I GTKWaveI Vivado WebPACK already installed from DE1I Nice to have:

I make, git

55 / 63

Page 56: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Tool Setup for Different OSs

I WindowsI Use the installers from the websites

I macOSI brew install sbtI For the rest, use the installer from the websitesI Use an Ubuntu VM to run Vivado

I Linux/UbuntuI sudo apt install openjdk-8-jdk git make gtkwaveI Install sbt, see https://github.com/schoeberl/chisel-lab/blob/master/Setup.md

I IntelliJ as from the websiteI If setup fails, we have you covered with the databar PCs

56 / 63

Page 57: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Virtual Machine Setup for Chisel

I Ubuntu basedI Ubuntu VM with Quartus uid: patmos, pwd: patmosI Ubuntu VM with Vivado uid: de2lab, pwd: de2lab

I But this is VERY large (40 GB for the .zip file)I Use the VMWare Workstation Player (free for Linux and

Windows)

57 / 63

Page 58: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

An IDE for Chisel

I IntelliJI Scala pluginI For IntelliJ: File - New - Project from Existing Sources...,

open build.sbtI Show it (down to the Basys3)

58 / 63

Page 59: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

A Chisel Book

I Available in open access (as PDF)I Optimized for reading on a tablet (size, hyper links)

I Amazon can do the printout59 / 63

Page 60: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Further Information

I https://www.chisel-lang.org/

I https://github.com/freechipsproject/chisel-cheatsheet/

releases/latest/download/chisel_cheatsheet.pdf

I https://github.com/ucb-bar/chisel-tutorial

I https://github.com/ucb-bar/generator-bootcamp

I http://groups.google.com/group/chisel-users

I https://github.com/schoeberl/chisel-book

60 / 63

Page 61: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Lab Time: Hello World in Chisel

I Get a blinking LED working on your FPGA boardI Clone or download the repository from:

I https://github.com/schoeberl/chisel-labI Follow the instructions from the lab page

I Start IntelliJ and follow the instructions from the lab pageI sbt runI Create a Vivado projectI Synthesize with the Play buttonI Configure the FPGA with the Programmer button

I You have your first Chisel design running in an FPGA!

61 / 63

Page 62: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Change the Design

I Use IntelliJ, gedit, or the editor you like mostI Source is in .../src/main/scala/Hello.scalaI Change blinking frequencyI Rerun the exampleI Optional:

I Change to an asymmetric blinking, e.g., 200 ms on everysecond

62 / 63

Page 63: Digital Electronics 2: Introduction · Chisel vs. Scala I A Chisel hardware description is a Scala program I Chisel is a Scala library I When the program is executed it generates

Summary

I The world is digitalI Processors do not get much faster – we need to design

custom hardwareI We need a modern language for hardware/systems design

for efficient/fast developmentI Chisel builds on the power of object-oriented and

functional Scala

63 / 63