Skip to content

Commit

Permalink
use # for headers instead of ====
Browse files Browse the repository at this point in the history
  • Loading branch information
xgupta authored Jan 12, 2021
1 parent 40a11be commit 96c3dca
Showing 1 changed file with 13 additions and 22 deletions.
35 changes: 13 additions & 22 deletions docs/Charter.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
Abstract
========
# CIRCT Charter

## Abstract

Recent trends in computer architecture have resulted in two core problems.
Firstly, how do we design complex, heterogenous systems-on-chip mixing
Expand All @@ -10,8 +11,7 @@ problems. This projects is focused on using LLVM/MLIR to express
these abstractions and to build useable open-source flows based on
those abstractions to solve the design problems of the next decade.

Introduction
============
## Introduction

With the slowing rate of scaling in semiconductor process technology,
there has become a widespread shift to develop more specialized
Expand Down Expand Up @@ -56,8 +56,7 @@ to the process of *programming* them. Furthermore, unifying the
abstractions for accelerator design and accelerator programming is a key
step towards enabling programming for arbitrary accelerators.

Dialects for Hardware Design
============================
## Dialects for Hardware Design

In existing systems, we see the use of a wide variety of abstractions
commonly in use. These abstractions tend to exist in a hierarchy of
Expand Down Expand Up @@ -90,8 +89,7 @@ lowering between dialects. Many existing systems span multiple
abstractions, but we've tried here to focus on the most significant
internal representations used in each tool.

Structural Circuit Netlists
---------------------------
### Structural Circuit Netlists

Netlists are a longstanding abstraction used for circuit design,
expressing the instantiation and interconnection of primitive
Expand All @@ -109,8 +107,7 @@ different times!) drive a signal onto the same wire. Alternatively, a
single component may sometimes use a wire as an input and at other times
use the same wire for output.

Register-transfer level (RTL)
-----------------------------
### Register-transfer level (RTL)

The Register-transfer level is has been commonly used to describe logic
circuits. The process of logic synthesis is commonly used to lower RTL
Expand All @@ -135,8 +132,7 @@ combinational aspects. Modern circuit analysis techniques often consider
the behavior across synchronous boundaries. Retiming is a common
transformation performed on RTL descriptions.

Finite-State Machine + Datapath (FSMD)
--------------------------------------
### Finite-State Machine + Datapath (FSMD)

High-Level synthesis(HLS) of RTL designs from C code has become a common
paradigm for accelerator design.
Expand Down Expand Up @@ -165,8 +161,7 @@ internal representation. A recent effort in this area is Futil,
which implements an intermediate representation leveraged by the Dahlia
system.

[Dataflow/handshake](Dialects/Handshake.md)
------------------
### [Dataflow/handshake](Dialects/Handshake.md)

Dataflow models have long been used to represent parallel computation.
Typically these models include components representing independent
Expand Down Expand Up @@ -197,8 +192,7 @@ hardware design to be inserted where RTL does not yet exist. By
mapping the dataflow model back to hardware in a non-cycle accurate
way, very fast emulation can be built quickly.

IP composition
--------------
### IP composition

IP composition has become a key methodology for most FPGA and ASIC
designs, enabling large designs to be constructed out of small
Expand All @@ -224,16 +218,14 @@ verbose and difficult for humans to interact with. DUH is a recent
open-source effort based on JSON formats also focusing on IP
composition.

Tool Flows
==========
## Tool Flows

Although it is important to have appropriate abstractions to build with,
those abstractions are simply a means to support transformations of
designs. Although many flows are potentially interested, we highlight
some of the most interesting flows.

High-Level Synthesis (HLS)
--------------------------
### High-Level Synthesis (HLS)

A common toolflow is to synthesize circuits from sequential algorithmic
code. Many tools have implemented this type of tool flow, usually with a
Expand Down Expand Up @@ -275,8 +267,7 @@ VHDL, enabling implementation using vendor tools. Alternatively, these
models could be further lowered to more hardware-specific dialects in
MLIR.

Dataflow-based Multicore Programming
------------------------------------
### Dataflow-based Multicore Programming

Multicore programming is commonly done using Single-Program
Multiple-Data (SPMD) programming, such as CUDA for GPUs. Typically, each
Expand Down

0 comments on commit 96c3dca

Please sign in to comment.