Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

oagFpga::MapperUtils Class Reference

A utility class for commonly used mapping-related functions. More...

#include <oagFpgaMapperUtils.h>

List of all members.

Mapping sequential signals

void addGlobalClock (oa::oaModBitNet *clock, const TriggerType trig=POSEDGE)
void addGlobalReset (oa::oaModBitNet *reset, const TriggerType trig=POSEDGE)
 Manually identifies a net as a global clock.
void identifyControls (oa::oaModule *module)
 Attempts to identify the control signals of all sequential gates in a module.
void identifyControls (AiModRef seq)
 Attempts to identify the control signals of a sequential node as resets, clocks, etc.
void removeAsyncResetsFromLogic (oa::oaModule *module)
 Removes sequential control signals from logic.
set< oa::oaModBitNet * > posAsyncResets
set< oa::oaModBitNet * > negAsyncResets
set< oa::oaModBitNet * > posClocks
set< oa::oaModBitNet * > negClocks

Public Types

enum  TriggerType { POSEDGE, NEGEDGE }

Public Member Functions

 MapperUtils ()
 Constructor.
Informational queries
void printGateUsage (oa::oaModule *target)
 Prints the number of times each gate is used as an instance.
Structural clean-up operations
void mergeEquivalentNets (oa::oaModule *module)
 Replaces all groups of equivalent nets with a single net.
void removeDanglingNets (oa::oaModule *module)
 Removes all the nets in a module that are not connected to either an Inst or a port.
create modules for these two types of library cells
oa::oaDesign * createSeq (oa::oaLib *curLib, oa::oaView *curView)
 Create a design with top module as a sequential element.
oa::oaDesign * createLut (oa::oaLib *curLib, oa::oaView *curView, int K)
 Create a design with top module as a LUT element.
void setSeq (oa::oaDesign *gate)
void setLut (oa::oaDesign *gate)
oa::oaDesign * getLut ()
oa::oaDesign * getSeq ()

Public Attributes

Important library cells
oa::oaDesign * seqGate
oa::oaModTerm * seqInput
oa::oaModTerm * seqOutput
oa::oaModTerm * seqReset
oa::oaModTerm * seqPreset
oa::oaModTerm * seqClock
TriggerType seqResetTrigger
TriggerType seqPresetTrigger
TriggerType seqClockTrigger
oa::oaDesign * lutGate
vector< oa::oaModTerm * > lutInputs
oa::oaModTerm * lutOutput
float seqArea
float seqDelay
float lutArea
float lutDelay

Friends

class FpgaMapper


Detailed Description

A utility class for commonly used mapping-related functions.

Definition at line 22 of file oagFpgaMapperUtils.h.


Member Enumeration Documentation

enum oagFpga::MapperUtils::TriggerType
 

Enumeration values:
POSEDGE 
NEGEDGE 

Definition at line 29 of file oagFpgaMapperUtils.h.


Constructor & Destructor Documentation

oagFpga::MapperUtils::MapperUtils  ) 
 

Constructor.

Definition at line 25 of file oagFpgaMapperUtils.cpp.

References lutGate, lutOutput, seqClock, seqGate, seqInput, seqOutput, seqPreset, and seqReset.


Member Function Documentation

void oagFpga::MapperUtils::addGlobalClock oa::oaModBitNet *  clock,
const TriggerType  trig = POSEDGE
[inline]
 

Parameters:
clock the global clock net
trig trigger type (POSEDGE or NEGEDGE)

Definition at line 80 of file oagFpgaMapperUtils.h.

Referenced by oagFpga::lutMap().

void oagFpga::MapperUtils::addGlobalReset oa::oaModBitNet *  reset,
const TriggerType  trig = POSEDGE
[inline]
 

Manually identifies a net as a global clock.

Parameters:
reset the global reset net
trig trigger type (POSEDGE or NEGEDGE)

Definition at line 86 of file oagFpgaMapperUtils.h.

Referenced by oagFpga::lutMap().

oa::oaDesign * oagFpga::MapperUtils::createLut oa::oaLib *  curLib,
oa::oaView *  curView,
int  K
 

Create a design with top module as a LUT element.

The created K-LUT element includes the following terminals: K inputs and an Output.

Definition at line 143 of file oagFpgaMapperUtils.cpp.

References lutGate, lutInputs, and lutOutput.

Referenced by oagFpga::lutMap().

oa::oaDesign * oagFpga::MapperUtils::createSeq oa::oaLib *  curLib,
oa::oaView *  curView
 

Create a design with top module as a sequential element.

The created sequential element includes the following terminals: Data, Clock, Preset, Reset and Output.

Definition at line 44 of file oagFpgaMapperUtils.cpp.

References seqClock, seqClockTrigger, seqGate, seqInput, seqOutput, seqPreset, seqPresetTrigger, seqReset, and seqResetTrigger.

Referenced by oagFpga::lutMap().

oa::oaDesign* oagFpga::MapperUtils::getLut  )  [inline]
 

Definition at line 73 of file oagFpgaMapperUtils.h.

oa::oaDesign* oagFpga::MapperUtils::getSeq  )  [inline]
 

Definition at line 74 of file oagFpgaMapperUtils.h.

void oagFpga::MapperUtils::identifyControls AiModRef  seq  ) 
 

Attempts to identify the control signals of a sequential node as resets, clocks, etc.

Parameters:
seq 

Definition at line 309 of file oagFpgaMapperUtils.cpp.

References DEBUG_PRINTLN, oagFpga::AiModRef::module, negAsyncResets, negClocks, posAsyncResets, posClocks, and oagFpga::toBitNet().

void oagFpga::MapperUtils::identifyControls oa::oaModule *  module  ) 
 

Attempts to identify the control signals of all sequential gates in a module.

Parameters:
module 

Definition at line 291 of file oagFpgaMapperUtils.cpp.

void oagFpga::MapperUtils::mergeEquivalentNets oa::oaModule *  module  ) 
 

Replaces all groups of equivalent nets with a single net.

Parameters:
module 

Definition at line 632 of file oagFpgaMapperUtils.cpp.

References oagFpga::toBitNet().

void oagFpga::MapperUtils::printGateUsage oa::oaModule *  target  ) 
 

Prints the number of times each gate is used as an instance.

Unimplemented.

Definition at line 703 of file oagFpgaMapperUtils.cpp.

Referenced by oagFpga::lutMap().

void oagFpga::MapperUtils::removeAsyncResetsFromLogic oa::oaModule *  module  ) 
 

Removes sequential control signals from logic.

All sequential control signals are synthesized in a very general manner. They are added as generic triggers on a sequential node, and any additional functional behavior is implemented in logic surrounding the sequential node.

Two common examples of this are asynchronous resets and presets. These are triggers, but also affect the function being latched (i.e. the '0' function will be latched on an asynchronous reset and the '1' function will be latched on an asynchronous preset).

In library gates that have asynchronous resets and presets, these inputs will both trigger the gate and set its state to the appropriate value. There is no need to keep the logic on the input of the sequential element that had previously driven the next state input to the appropriate reset values. In fact, this logic is entirely useless and may confuse some equivalence checkers.

This function removes the asynchronous resets and presets from the input logic of sequential elements, replacing them with a constant that reflects the unasserted value of the signal.

Parameters:
module 

Definition at line 251 of file oagFpgaMapperUtils.cpp.

References negAsyncResets, and posAsyncResets.

void oagFpga::MapperUtils::removeDanglingNets oa::oaModule *  module  ) 
 

Removes all the nets in a module that are not connected to either an Inst or a port.

The terminal nodes in the underlying AIG are also removed.

Parameters:
module 

Definition at line 761 of file oagFpgaMapperUtils.cpp.

References DEBUG_PRINTLN, and oagFpga::toBitNet().

Referenced by oagFpga::lutMap().

void oagFpga::MapperUtils::setLut oa::oaDesign *  gate  )  [inline]
 

Definition at line 71 of file oagFpgaMapperUtils.h.

void oagFpga::MapperUtils::setSeq oa::oaDesign *  gate  )  [inline]
 

Definition at line 70 of file oagFpgaMapperUtils.h.


Friends And Related Function Documentation

friend class FpgaMapper [friend]
 

Definition at line 23 of file oagFpgaMapperUtils.h.


Member Data Documentation

float oagFpga::MapperUtils::lutArea
 

Definition at line 60 of file oagFpgaMapperUtils.h.

float oagFpga::MapperUtils::lutDelay
 

Definition at line 60 of file oagFpgaMapperUtils.h.

oa::oaDesign* oagFpga::MapperUtils::lutGate
 

Definition at line 54 of file oagFpgaMapperUtils.h.

Referenced by createLut(), and MapperUtils().

vector<oa::oaModTerm *> oagFpga::MapperUtils::lutInputs
 

Definition at line 55 of file oagFpgaMapperUtils.h.

Referenced by createLut().

oa::oaModTerm* oagFpga::MapperUtils::lutOutput
 

Definition at line 56 of file oagFpgaMapperUtils.h.

Referenced by createLut(), and MapperUtils().

set<oa::oaModBitNet*> oagFpga::MapperUtils::negAsyncResets [protected]
 

Definition at line 102 of file oagFpgaMapperUtils.h.

Referenced by identifyControls(), and removeAsyncResetsFromLogic().

set<oa::oaModBitNet*> oagFpga::MapperUtils::negClocks [protected]
 

Definition at line 103 of file oagFpgaMapperUtils.h.

Referenced by identifyControls().

set<oa::oaModBitNet*> oagFpga::MapperUtils::posAsyncResets [protected]
 

Definition at line 102 of file oagFpgaMapperUtils.h.

Referenced by identifyControls(), and removeAsyncResetsFromLogic().

set<oa::oaModBitNet*> oagFpga::MapperUtils::posClocks [protected]
 

Definition at line 103 of file oagFpgaMapperUtils.h.

Referenced by identifyControls().

float oagFpga::MapperUtils::seqArea
 

Definition at line 59 of file oagFpgaMapperUtils.h.

oa::oaModTerm * oagFpga::MapperUtils::seqClock
 

Definition at line 50 of file oagFpgaMapperUtils.h.

Referenced by createSeq(), and MapperUtils().

TriggerType oagFpga::MapperUtils::seqClockTrigger
 

Definition at line 51 of file oagFpgaMapperUtils.h.

Referenced by createSeq().

float oagFpga::MapperUtils::seqDelay
 

Definition at line 59 of file oagFpgaMapperUtils.h.

oa::oaDesign* oagFpga::MapperUtils::seqGate
 

Definition at line 48 of file oagFpgaMapperUtils.h.

Referenced by createSeq(), and MapperUtils().

oa::oaModTerm* oagFpga::MapperUtils::seqInput
 

Definition at line 49 of file oagFpgaMapperUtils.h.

Referenced by createSeq(), and MapperUtils().

oa::oaModTerm * oagFpga::MapperUtils::seqOutput
 

Definition at line 49 of file oagFpgaMapperUtils.h.

Referenced by createSeq(), and MapperUtils().

oa::oaModTerm * oagFpga::MapperUtils::seqPreset
 

Definition at line 50 of file oagFpgaMapperUtils.h.

Referenced by createSeq(), and MapperUtils().

TriggerType oagFpga::MapperUtils::seqPresetTrigger
 

Definition at line 51 of file oagFpgaMapperUtils.h.

Referenced by createSeq().

oa::oaModTerm* oagFpga::MapperUtils::seqReset
 

Definition at line 50 of file oagFpgaMapperUtils.h.

Referenced by createSeq(), and MapperUtils().

TriggerType oagFpga::MapperUtils::seqResetTrigger
 

Definition at line 51 of file oagFpgaMapperUtils.h.

Referenced by createSeq().


The documentation for this class was generated from the following files:
Generated on Mon Jul 9 14:17:22 2007 for OA Gear Fpga by  doxygen 1.3.9.1