30.04.2013 Views

BSV by Example - Computation Structures Group

BSV by Example - Computation Structures Group

BSV by Example - Computation Structures Group

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Contents<br />

Table of Contents 2<br />

1 Introduction 9<br />

1.1 Design activities where <strong>BSV</strong> is used . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

1.2 Key ideas in <strong>BSV</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

1.2.1 Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

1.2.2 Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

1.3 Why <strong>BSV</strong>? Can’t we do all this with existing languages (like C++)? . . . . . . . . . 11<br />

1.4 About this book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

2 Getting started with <strong>BSV</strong> 15<br />

2.1 A simple example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

2.1.1 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

2.1.2 Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

2.1.3 (* synthesize *) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />

2.1.4 Module definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />

2.1.5 Rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />

2.1.6 System tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />

2.2 Building the design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />

2.2.1 Bluespec Development Workstation (BDW) . . . . . . . . . . . . . . . . . . . 17<br />

2.2.2 Components of a <strong>BSV</strong> design . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

2.2.3 Overview of the <strong>BSV</strong> build process . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

2.2.4 Create a project file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />

2.2.5 Compile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

2.3 Multiple modules in a single package . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

2.3.1 Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />

2.4 Multiple packages in a single design . . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />

3 Data types 23<br />

3.1 Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />

3.2 Uppercase and lowercase in type and value identifiers . . . . . . . . . . . . . . . . . . 24<br />

3.3 Typeclasses and overloading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />

3.4 Pre-defined type classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />

3.5 Data type conversion functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />

3.6 Some common scalar types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26<br />

3.6.1 Bit#(n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26<br />

3.6.2 Bool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26<br />

2

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!