Prerequisites

apaj edited this page Sep 3, 2018 · 1 revision

As mentioned in the Big Picture, Chisel is embedded into Scala. That of course, means that some knowledge of Scala principles and syntax is a prerequisite to learning Chisel. However, that can be done along the road, i.e. lack of familiarity with Scala should not stop you from starting on the Chisel Learning Journey.

This page represents a prerequisites references collection and, therefore, it is kindly advised not to spend to much time on these resources initially. The list, of course, is not complete and it serves only to provide starting points in different investigations. If the starting point here does not prove to be also the ending point of the investigation, then the answer should be looked for in the advanced section. If your investigation still does not end there, that means we need either another resource here or another page in that section. Please feel free to add useful resource here or another page to the Wiki following the instructions given here.

When adding a reference here, please try not to be redundant - i.e. if answer is found within the already listed reference, there is no need for repetition. The exceptions are very concrete examples of Scala code (either in the context of the code paradigm or syntax) found directly in Sodor or Rocket code - those may be added as pages here.

Scala Language

Scala is a modern multi-paradigm programming language designed to express common programming patterns in a concise, elegant, and type-safe way. The most important resources to start learning Scala as well as look for specific answers are listed in this section:

  1. A very general introduction to scala
  2. Scala things you should know, an article by the creators of Chisel
  3. Scala syntax cheat-sheet
  4. Scala language official home page
  5. Scala tutorial with the possibility of running the Scala code you enter right there
  6. Scala Hands On (intended for java programmers)
  7. Programming in Scala, 1st Ed. - a book by Martin Odersky, creator of Scala
  8. Functional Programming Principles in Scala - a MOOC by Martin Odersky, creator of Scala

Programming Paradigm

Scala smoothly integrates features of object-oriented and functional languages. In this section pages towards the discussions, concerns and improvements of the programming paradigm used in the context of hardware design are listed:

  1. Challenges of Object Oriented Style

Scala code examples to improve understanding of Chisel code

At the moment what follows will be just a list of questions-and-answers on Scala programming principles and syntax, that result from the weekly Hangout sessions and turn out to be a (very often) source of confusion when just starting with Chisel.

  1. How to define functions?
  2. How to use OVERRIDE modifier?
Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.