---
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](cookbooks/cookbooks).

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

The [API Documentation](https://www.chisel-lang.org/api/) gives the detailed reference for the Chisel source code.
Note that previous versions can be found via the sidebar menu at [https://www.chisel-lang.org/chisel3].

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

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

The [Developers](developers/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.
