Learning BSV‎ > ‎

New and Prospective Users

This is the place to go if you are a new user or prospective user and want to learn more about Bluespec and Bluespec SystemVerilog.

For an overview of Bluespec, see our Product information.

Learning Bluespec

Getting Started

Training Resources


Small Examples

Product Documentation

Using the Bluespec Development Workstation

Designing with Bluespec

Here we provide an overview of some basic concepts in Bluespec SystemVerilog. See the BSV Reference Manual and the Training Resources for more detailed discussion.

Basic Concepts

Overview of a BSV program
Data Types
Bluespec provides a strong, static type-checking environment. Every variable and every expression has a type. Variables must be assigned values which have compatible types. Type checking, which occurs before program elaboration or execution, ensures that object types are compatible and that needed conversion functions are valid for the context.
Bluespec interfaces provide a means to group wires into bundles with specified uses, described by methods.  Interfaces specify which methods a module provides, they do not say anything about the implementation of the methods.
Methods are the specific functions which may be invoked by the caller.  These functions take zero or more arguments, can return values or cause actions to occur.   When translated into RTL, each method becomes a bundle of wires. The method definition is part of the module definition.
A module consists of three things: state, rules that operate on that state, and the module's interface to the outside world (surrounding hierarchy). A module definition specifies a scheme that can be instantiated multiple times.
Rules are used in Bluespec SystemVerilog to describe how data is moved from one state to another.

Logic Representation

The following two sections describe how sequential and combinational logic is defined Bluespec SystemVerilog and how it differs from Verilog.

Sequential Element

Combinational Logic

Guiding the Compiler

You can guide the compiler through either flags during compilation or by specifying attributes in the BSV source code.

Compiler Flags
Compiler flags are available to both guide the compiler in some of its decisions as well as to control the compiler output, providing information to help you understand the results of the compilation.
Attributes are specified within the BSV source code to control decisions made by the compiler. Attributes are used to specify generated names, add comments and guide or constrain scheduling decisions.