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.
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 ConceptsOverview of a BSV program
- Data Types
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.
The following two sections describe how sequential and combinational
logic is defined Bluespec SystemVerilog and how it differs from
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