BSV by Example - Computation Structures Group
BSV by Example - Computation Structures Group
BSV by Example - Computation Structures Group
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