---
sidebar_position: 0
---

# An Introduction to Chisel

_Chisel_ (Constructing
Hardware In a Scala Embedded Language) is a hardware
construction language embedded in the high-level programming language
Scala.
 Chisel is a library of special class
definitions, predefined objects, and usage conventions within [Scala](https://www.scala-lang.org/),
so when you write Chisel you are actually writing a Scala
program that constructs a hardware graph.
As you gain experience and want to make your code simpler or more
reusable, you will find it important to leverage the underlying power
of the Scala language. We recommend you consult one of the excellent
Scala books to become more expert in Scala programming.

For a tutorial covering both Chisel and Scala, see the
[**online Chisel Bootcamp**](https://mybinder.org/v2/gh/freechipsproject/chisel-bootcamp/master).

For quick reference "How-To" guides see the [Cookbooks](docs/cookbooks).

If you like a textbook to learn Chisel and also a bit of digital design in general, you may be interested in reading [Digital Design with Chisel](http://www.imm.dtu.dk/~masca/chisel-book.html). It is available in English, Chinese, Japanese, and Vietnamese.

For a deeper introduction to key concepts in  Chisel see the [Explanations](docs/explanations).

The [API Documentation](../api) gives the detailed reference for the Chisel source code.

The [Resources](docs/resources) provides links to other useful resources for learning and working with Chisel.

The [Appendix](docs/appendix) covers some more advanced topics.

The [Developers](docs/developers) section provides information for those working on the Chisel library itself.

>Throughout these pages, we format commentary on our design choices as in
this paragraph.  You should be able to skip the commentary sections
and still fully understand how to use Chisel, but we hope you'll find
them interesting.
