CIRCT  19.0.0git
Public Member Functions | Private Member Functions | Private Attributes | List of all members
CompileControlVisitor Class Reference
Collaboration diagram for CompileControlVisitor:
Collaboration graph

Public Member Functions

 CompileControlVisitor (AnalysisManager am)
void dispatch (Operation *op, ComponentOp component)

Private Member Functions

void visit (SeqOp seqOp, ComponentOp &component)
 Generates a latency-insensitive FSM to realize a sequential operation. More...
void visit (EnableOp, ComponentOp &)

Private Attributes

AnalysisManager am

Detailed Description

Definition at line 41 of file CompileControl.cpp.

Constructor & Destructor Documentation

◆ CompileControlVisitor()

CompileControlVisitor::CompileControlVisitor ( AnalysisManager  am)

Definition at line 43 of file CompileControl.cpp.

Member Function Documentation

◆ dispatch()

void CompileControlVisitor::dispatch ( Operation *  op,
ComponentOp  component 

Definition at line 44 of file CompileControl.cpp.

◆ visit() [1/2]

void CompileControlVisitor::visit ( EnableOp  ,
ComponentOp &   

Definition at line 56 of file CompileControl.cpp.

◆ visit() [2/2]

void CompileControlVisitor::visit ( SeqOp  seq,
ComponentOp &  component 

Generates a latency-insensitive FSM to realize a sequential operation.

This is done by initializing GroupGoOp values for the enabled groups in the SeqOp, and then creating a new Seq GroupOp with the given FSM. Each step in the FSM is guarded by the done operation of the group currently being executed. After the group is complete, the FSM is incremented. This SeqOp is then replaced in the control with an Enable statement referring to the new Seq GroupOp.

Definition at line 70 of file CompileControl.cpp.

References assert(), builder, circt::calyx::createConstant(), circt::comb::createOrFoldNot(), circt::calyx::createRegister(), circt::calyx::direction::get(), and getNecessaryBitWidth().

Member Data Documentation

◆ am

AnalysisManager CompileControlVisitor::am

Definition at line 60 of file CompileControl.cpp.

The documentation for this class was generated from the following file: