Repository logo
 

Further sub-cycle and multi-cycle schedulling support for Bluespec Verilog

Accepted version
Peer-reviewed

Type

Conference Object

Change log

Authors

Greaves, David J 

Abstract

Bluespec is a hardware description language where all behaviour is expressed in rules that execute atomically. The standard compilation semantics for Bluespec enforce a particular mapping between rule firing and hardware clock cycles, such as a register only being updated by exactly one firing of at most one rule in any clock cycle. Also, the standard compiler does not introduce any additional state, such as credit-based or round-robin arbiters to guarantee fairness between rules over time. On the other hand, many useful hardware resources, such as complex ALUs and synchronous RAMs, are pipelined. Unlike typical high-level synthesis tools, in standard Bluespec such resources cannot be invoked using infix operators in expressions such as A[e] or e1*e2 since binding to specific instances and multi-clock cycle schedules are required. In this paper we extend the reference semantics of Bluespec to decouple it from clock cycles, allowing multiple updates to a register within one clock cycle and automatic instantiation of arbiters for multi-clock cycle behaviour. We describe the new semantic packing rules as extensions of our standard compilation rules and we report early results from an open-source, fully-functional implementation.

Description

Keywords

46 Information and Computing Sciences, 40 Engineering, 4008 Electrical Engineering

Journal Title

Proceedings of the 17th ACM-IEEE International Conference on Formal Methods and Models for System Design

Conference Name

MEMOCODE '19: 17th ACM-IEEE International Conference on Formal Methods and Models for System Design

Journal ISSN

Volume Title

Publisher

ACM

Rights

All rights reserved