OpenASIP
2.0
|
#include <DefaultDecoderGenerator.hh>
Public Member Functions | |
DefaultDecoderGenerator (const TTAMachine::Machine &machine, const BinaryEncoding &bem, const CentralizedControlICGenerator &icGenerator) | |
virtual | ~DefaultDecoderGenerator () |
void | setGenerateDebugger (bool generate) |
void | setGenerateNoLoopbackGlock (bool generate) |
void | setSyncReset (bool value) |
void | setGenerateBusEnable (bool value) |
void | SetHDL (ProGe::HDL language) |
void | completeDecoderBlock (const ProGe::NetlistGenerator &nlGenerator, ProGe::NetlistBlock &coreBlock) |
void | generateInstructionDecoder (const ProGe::NetlistGenerator &nlGenerator, const std::string &dstDirectory) |
std::set< int > | requiredRFLatencies (const TTAMachine::ImmediateUnit &iu) const |
void | verifyCompatibility () const |
int | glockRequestWidth () const |
int | glockPortWidth () const |
void | setGenerateLockTrace (bool generate) |
void | setLockTraceStartingCycle (unsigned int startCycle) |
Static Public Attributes | |
static const std::string | RISCV_SIMM_PORT_IN_NAME = "simm_in" |
static const std::string | GLOCK_PORT_NAME = "glock" |
Private Types | |
typedef std::set< TTAMachine::Bus * > | BusSet |
Set type for buses. More... | |
typedef int | GlockBitType |
Types for mapping global lock and global lock request signals. More... | |
typedef int | GlockReqBitType |
typedef std::map< GlockBitType, const TTAMachine::Unit * > | UnitGlockBitMapType |
typedef std::map< const TTAMachine::Unit *, GlockReqBitType > | UnitGlockReqBitMapType |
Private Member Functions | |
void | addLockReqPortToDecoder () |
void | addGlockPortToDecoder () |
void | writeComment (std::ostream &stream, int indent, std::string comment) const |
void | writeSignalDeclaration (std::ostream &stream, ProGe::DataType type, std::string sigName, int width) const |
void | writeInstructionDecoder (std::ostream &stream) |
void | writeLockDumpCode (std::ostream &stream) const |
void writeDecompressSignalsVHDL(std::ostream& stream) const; TBR More... | |
void | writeMoveFieldSignals (std::ostream &stream) const |
void | writeImmediateSlotSignals (std::ostream &stream) const |
void | writeLongImmediateTagSignal (std::ostream &stream) const |
void | writeSquashSignals (std::ostream &stream) const |
void | writeSocketCntrlSignals (std::ostream &stream) |
void | writeFUCntrlSignals (std::ostream &stream) |
void | writeFUCntrlSignals (const TTAMachine::FunctionUnit &fu, std::ostream &stream) |
void | writeRFCntrlSignals (std::ostream &stream) |
void | writeGlockHandlingSignals (std::ostream &stream) const |
void | writePipelineFillSignals (std::ostream &stream) const |
void | writeFullNOPConstant (std::ostream &stream) const |
std::string | writeNOPEncodingVHDL () const |
void | writeDismemberingAndITDecompression (std::ostream &stream) const |
void | writeInstructionDismembering (std::ostream &stream) const |
void | writeSquashSignalGenerationProcesses (std::ostream &stream) const |
void | writeSquashSignalGenerationProcess (const TTAMachine::Bus &bus, std::ostream &stream) const |
void | writeLongImmediateWriteProcess (std::ostream &stream) const |
void | writeControlRegisterMappings (std::ostream &stream) const |
void | writeRFSRAMDecodingProcess (std::ostream &stream) const |
void | writeMainDecodingProcess (std::ostream &stream) const |
void | writeGlockMapping (std::ostream &stream) const |
void | writePipelineFillProcess (std::ostream &stream) const |
void | writeResettingOfControlRegisters (std::ostream &stream) const |
void | writeInstructionDecoding (std::ostream &stream) const |
void | writeRulesForSourceControlSignals (std::ostream &stream) const |
void | writeRulesForDestinationControlSignals (std::ostream &stream) const |
void | writeSimmDataSignal (const TTAMachine::Bus &bus, std::ostream &stream) const |
void | writeBusControlRulesOfOutputSocket (const TTAMachine::Socket &socket, std::ostream &stream) const |
void | writeBusControlRulesOfSImmSocketOfBus (const TTAMachine::Bus &bus, std::ostream &stream) const |
void | writeControlRulesOfRFReadPort (const TTAMachine::RFPort &port, std::ostream &stream) const |
void | writeControlRulesOfFUOutputPort (const TTAMachine::BaseFUPort &port, std::ostream &stream) const |
void | writeControlRulesOfFUInputPort (const TTAMachine::BaseFUPort &port, std::ostream &stream) const |
void | writeControlRulesOfRFWritePort (const TTAMachine::RFPort &port, std::ostream &stream) const |
void | writeInstructionTemplateProcedures (const ProGe::HDL language, const TTAMachine::InstructionTemplate &iTemp, int indLevel, std::ostream &stream) const |
void | writeBusMuxControlLogic (const TTAMachine::Bus &bus, const std::set< TTAMachine::Socket * > outputSockets, std::ostream &stream) const |
TTAMachine::RegisterGuard & | findGuard (const GPRGuardEncoding &encoding) const |
TTAMachine::PortGuard & | findGuard (const FUGuardEncoding &encoding) const |
int | opcodeWidth (const TTAMachine::FunctionUnit &fu) const |
std::string | instructionTemplateCondition (const ProGe::HDL language, const std::string &iTempName) const |
std::string | busCntrlSignalPinOfSocket (const TTAMachine::Socket &socket, const TTAMachine::Bus &bus) const |
int | opcode (const TTAMachine::HWOperation &operation) const |
bool | sacEnabled (const std::string &rfName) const |
Static Private Member Functions | |
static void | writeSquashSignalSubstitution (const ProGe::HDL language, const TTAMachine::Bus &bus, const GuardEncoding &enc, const TTAMachine::Guard &guard, std::ostream &stream, int indLevel) |
static bool | containsSimilarGuard (const std::set< TTAMachine::PortGuard * > &guardSet, const TTAMachine::PortGuard &guard) |
static bool | containsSimilarGuard (const std::set< TTAMachine::RegisterGuard * > &guardSet, const TTAMachine::RegisterGuard &guard) |
static bool | needsBusControl (const TTAMachine::Socket &socket) |
static bool | needsDataControl (const TTAMachine::Socket &socket) |
static std::string | simmDataPort (const std::string &busName) |
static std::string | simmControlPort (const std::string &busName) |
static int | simmPortWidth (const TTAMachine::Bus &bus) |
static std::string | simmDataSignalName (const std::string &busName) |
static std::string | simmCntrlSignalName (const std::string &busName) |
static std::string | fuLoadCntrlPort (const std::string &fuName, const std::string &portName) |
static std::string | fuLoadSignalName (const std::string &fuName, const std::string &portName) |
static std::string | fuOpcodeCntrlPort (const std::string &fu) |
static std::string | fuOpcodeSignalName (const std::string &fu) |
static std::string | rfLoadCntrlPort (const std::string &rfName, const std::string &portName) |
static std::string | rfLoadSignalName (const std::string &rfName, const std::string &portName, bool async=false) |
static std::string | rfOpcodeSignalName (const std::string &rfName, const std::string &portName, bool async=false) |
static std::string | rfOpcodeCntrlPort (const std::string &rfName, const std::string &portName) |
static std::string | iuReadOpcodeCntrlPort (const std::string &unitName, const std::string &portName) |
static std::string | iuReadOpcodeCntrlSignal (const std::string &unitName, const std::string &portName) |
static std::string | iuReadLoadCntrlPort (const std::string &unitName, const std::string &portName) |
static std::string | iuReadLoadCntrlSignal (const std::string &unitName, const std::string &portName) |
static std::string | iuWritePort (const std::string &iuName) |
static std::string | iuWriteSignal (const std::string &iuName) |
static std::string | iuWriteOpcodeCntrlPort (const std::string &unitName) |
static std::string | iuWriteOpcodeCntrlSignal (const std::string &unitName) |
static std::string | iuWriteLoadCntrlPort (const std::string &unitName) |
static std::string | iuWriteLoadCntrlSignal (const std::string &unitName) |
static std::string | busMuxCntrlSignal (const TTAMachine::Bus &bus) |
static std::string | busMuxCntrlRegister (const TTAMachine::Bus &bus) |
static std::string | busMuxEnableSignal (const TTAMachine::Bus &bus) |
static std::string | busMuxEnableRegister (const TTAMachine::Bus &bus) |
static std::string | socketBusControlPort (const std::string &name) |
static std::string | socketDataControlPort (const std::string &name) |
static std::string | moveFieldSignal (const std::string &busName) |
static std::string | guardPortName (const TTAMachine::Guard &guard) |
static std::string | srcFieldSignal (const std::string &busName) |
static std::string | dstFieldSignal (const std::string &busName) |
static std::string | guardFieldSignal (const std::string &busName) |
static std::string | immSlotSignal (const std::string &immSlot) |
static std::string | squashSignal (const std::string &busName) |
static std::string | socketBusCntrlSignalName (const std::string &name) |
static std::string | socketDataCntrlSignalName (const std::string &name) |
static std::string | gcuDataPort (const std::string &nameInADF) |
static int | busControlWidth (const TTAMachine::Socket &socket) |
static int | dataControlWidth (const TTAMachine::Socket &socket) |
static int | rfOpcodeWidth (const TTAMachine::BaseRegisterFile &rf) |
static BusSet | connectedBuses (const TTAMachine::Socket &socket) |
static std::string | socketEncodingCondition (const ProGe::HDL language, const SlotField &srcField, const std::string &socketName) |
static std::string | portCodeCondition (const ProGe::HDL language, const SocketEncoding &socketEnc, const PortCode &code) |
static std::string | rfOpcodeFromSrcOrDstField (const ProGe::HDL language, const SocketEncoding &socketEnc, const PortCode &code) |
static std::string | indentation (unsigned int level) |
Private Attributes | |
const TTAMachine::Machine & | machine_ |
The machine. More... | |
const BinaryEncoding & | bem_ |
The binary encoding map. More... | |
const CentralizedControlICGenerator & | icGenerator_ |
The IC generator. More... | |
const ProGe::NetlistGenerator * | nlGenerator_ |
The netlist generator. More... | |
ProGe::NetlistBlock * | decoderBlock_ |
The instruction decoder block in the netlist. More... | |
bool | generateLockTrace_ |
Tells whether to generate global lock tracing code. More... | |
TCEString | entityNameStr_ |
ProGe::HDL | language_ |
bool | generateDebugger_ |
Generate debugger signals? More... | |
bool | syncReset_ |
Reset synchronously (otherwise asynchronous) More... | |
bool | generateBusEnable_ |
Bus enable signals for bustrace. More... | |
unsigned int | lockTraceStartingCycle_ |
The starting cycle for bus tracing. More... | |
bool | generateAlternateGlockReqHandling_ |
The flag to generate global lock request handling in decoder. False means delegating the lock request towards instruction fetch. More... | |
UnitGlockBitMapType | unitGlockBitMap_ |
Maps connected glock port bits to associated TTA Units. More... | |
UnitGlockReqBitMapType | unitGlockReqBitMap_ |
Maps TTA Units to associated glock request port bits. More... | |
std::vector< std::string > | registerVectors |
Bookkeeping for reset-needing signals. More... | |
std::vector< std::string > | registerBits |
Generates the default instruction decoder in VHDL.
Definition at line 86 of file DefaultDecoderGenerator.hh.
|
private |
Set type for buses.
Definition at line 121 of file DefaultDecoderGenerator.hh.
|
private |
Types for mapping global lock and global lock request signals.
Definition at line 123 of file DefaultDecoderGenerator.hh.
|
private |
Definition at line 124 of file DefaultDecoderGenerator.hh.
|
private |
Definition at line 126 of file DefaultDecoderGenerator.hh.
|
private |
Definition at line 128 of file DefaultDecoderGenerator.hh.
DefaultDecoderGenerator::DefaultDecoderGenerator | ( | const TTAMachine::Machine & | machine, |
const BinaryEncoding & | bem, | ||
const CentralizedControlICGenerator & | icGenerator | ||
) |
The constructor.
machine | The machine. |
bem | The binary encoding map. |
icGenerator | The IC generator. |
Definition at line 155 of file DefaultDecoderGenerator.cc.
|
virtual |
|
private |
Adds the global lock port to decoder and connects it to the glock ports of units.
Precondition: addLockReqPortToDecoder() must be called before this.
Definition at line 508 of file DefaultDecoderGenerator.cc.
References assert, ProGe::BIT_VECTOR, ProGe::Netlist::connect(), TTAMachine::Machine::Navigator< ComponentType >::count(), decoderBlock_, TTAMachine::Machine::functionUnitNavigator(), GLOCK_PORT_NAME, CentralizedControlICGenerator::glockPort(), ProGe::NetlistGenerator::glockPort(), glockPortWidth(), CentralizedControlICGenerator::hasGlockPort(), ProGe::NetlistGenerator::hasGlockPort(), ProGe::BaseNetlistBlock::hasParentBlock(), icGenerator_, TTAMachine::Machine::immediateUnitNavigator(), TTAMachine::Machine::Navigator< ComponentType >::item(), machine_, ProGe::NetlistBlock::netlist(), ProGe::NetlistGenerator::netlistBlock(), nlGenerator_, ProGe::OUT, ProGe::NetlistBlock::parentBlock(), TTAMachine::Unit::portCount(), TTAMachine::Machine::registerFileNavigator(), Conversion::toString(), and unitGlockBitMap_.
Referenced by completeDecoderBlock().
|
private |
Adds the lock request input port to decoder and connects the global lock request ports of FU's to it.
Definition at line 468 of file DefaultDecoderGenerator.cc.
References ProGe::BIT_VECTOR, ProGe::Netlist::connect(), TTAMachine::Machine::Navigator< ComponentType >::count(), decoderBlock_, TTAMachine::Machine::functionUnitNavigator(), ProGe::NetlistGenerator::glockReqPort(), glockRequestWidth(), ProGe::NetlistGenerator::hasGlockReqPort(), ProGe::IN, TTAMachine::Machine::Navigator< ComponentType >::item(), LOCK_REQ_PORT_NAME, machine_, ProGe::NetlistBlock::netlist(), ProGe::NetlistGenerator::netlistBlock(), nlGenerator_, ProGe::NetlistBlock::parentBlock(), TTAMachine::Unit::portCount(), Conversion::toString(), and unitGlockReqBitMap_.
Referenced by completeDecoderBlock().
|
private |
Returns the signal pin that controls the bus of the given output socket.
socket | The socket. |
bus | The bus. |
Definition at line 4885 of file DefaultDecoderGenerator.cc.
References assert, TTAMachine::Socket::direction(), icGenerator_, language_, TTAMachine::Component::name(), CentralizedControlICGenerator::outputSocketCntrlPinForSegment(), TTAMachine::Bus::segment(), socketBusCntrlSignalName(), Conversion::toString(), and ProGe::VHDL.
Referenced by writeBusControlRulesOfOutputSocket().
|
staticprivate |
Returns the number of bits required to control the bus connections of the given socket.
socket | The socket. |
Definition at line 4663 of file DefaultDecoderGenerator.cc.
References MathTools::bitLength(), TTAMachine::Socket::direction(), and TTAMachine::Socket::segmentCount().
Referenced by completeDecoderBlock(), and writeSocketCntrlSignals().
|
staticprivate |
Definition at line 4463 of file DefaultDecoderGenerator.cc.
References busMuxCntrlSignal().
|
staticprivate |
Definition at line 4458 of file DefaultDecoderGenerator.cc.
References TTAMachine::Component::name().
Referenced by busMuxCntrlRegister().
|
staticprivate |
Definition at line 4473 of file DefaultDecoderGenerator.cc.
References busMuxEnableSignal().
Referenced by writeSocketCntrlSignals().
|
staticprivate |
Definition at line 4468 of file DefaultDecoderGenerator.cc.
References TTAMachine::Component::name().
Referenced by busMuxEnableRegister().
void DefaultDecoderGenerator::completeDecoderBlock | ( | const ProGe::NetlistGenerator & | nlGenerator, |
ProGe::NetlistBlock & | coreBlock | ||
) |
Completes the decoder block in the given netlist block representing the TTA core by adding the IC-interface and connecting the decoder to the interconnection network and machine building units.
nlGenerator | The netlist generator that generated the netlist. |
coreBlock | The netlist block that contains the decoder. |
Definition at line 223 of file DefaultDecoderGenerator.cc.
References addGlockPortToDecoder(), addLockReqPortToDecoder(), assert, ProGe::BIT, ProGe::BIT_VECTOR, CentralizedControlICGenerator::busCntrlPortOfSocket(), busControlWidth(), TTAMachine::Machine::busNavigator(), ProGe::Netlist::connect(), containsSimilarGuard(), TTAMachine::Machine::controlUnit(), TTAMachine::Machine::Navigator< ComponentType >::count(), CentralizedControlICGenerator::dataCntrlPortOfSocket(), dataControlWidth(), decoderBlock_, TTAMachine::Socket::direction(), ProGe::NetlistPort::direction(), entityNameStr_, ProGe::NetlistGenerator::fuGuardPort(), fuLoadCntrlPort(), TTAMachine::Machine::functionUnitNavigator(), fuOpcodeCntrlPort(), ProGe::NetlistGenerator::fuOpcodePort(), generateDebugger_, TTAMachine::Bus::guard(), TTAMachine::Bus::guardCount(), guardPortName(), ProGe::NetlistGenerator::hasOpcodePort(), icGenerator_, TTAMachine::Machine::immediateUnitNavigator(), ProGe::NetlistGenerator::immediateUnitWritePort(), TTAMachine::Bus::immediateWidth(), ProGe::IN, ProGe::NetlistGenerator::instructionDecoder(), TTAMachine::Port::isInput(), TTAMachine::BaseFUPort::isTriggering(), TTAMachine::Machine::Navigator< ComponentType >::item(), iuReadLoadCntrlPort(), iuReadOpcodeCntrlPort(), iuWriteLoadCntrlPort(), iuWriteOpcodeCntrlPort(), iuWritePort(), ProGe::NetlistGenerator::loadPort(), machine_, ProGe::BaseNetlistBlock::moduleName(), TTAMachine::Port::name(), TTAMachine::Component::name(), needsBusControl(), needsDataControl(), ProGe::NetlistBlock::netlist(), ProGe::NetlistGenerator::netlistBlock(), ProGe::NetlistGenerator::netlistPort(), nlGenerator_, opcodeWidth(), ProGe::OUT, TTAMachine::BaseRegisterFile::port(), TTAMachine::FunctionUnit::port(), TTAMachine::PortGuard::port(), TTAMachine::Unit::portCount(), TTAMachine::Socket::portCount(), TTAMachine::RegisterGuard::registerFile(), TTAMachine::Machine::registerFileNavigator(), TTAMachine::RegisterGuard::registerIndex(), TTAMachine::ControlUnit::returnAddressPort(), ProGe::NetlistGenerator::rfGuardPort(), rfLoadCntrlPort(), rfOpcodeCntrlPort(), ProGe::NetlistGenerator::rfOpcodePort(), rfOpcodeWidth(), TTAMachine::Socket::segmentCount(), simmControlPort(), CentralizedControlICGenerator::simmDataPort(), simmDataPort(), simmPortWidth(), socketBusControlPort(), socketDataControlPort(), TTAMachine::Machine::socketNavigator(), Conversion::toString(), TTAMachine::BaseRegisterFile::width(), and ProGe::NetlistPort::widthFormula().
|
staticprivate |
Returns a set of buses connected to the given socket.
socket | The socket. |
Definition at line 4708 of file DefaultDecoderGenerator.cc.
References TTAMachine::Segment::parentBus(), TTAMachine::Socket::segment(), and TTAMachine::Socket::segmentCount().
Referenced by writeBusControlRulesOfOutputSocket(), writeControlRulesOfFUInputPort(), writeControlRulesOfFUOutputPort(), writeControlRulesOfRFReadPort(), writeControlRulesOfRFWritePort(), and writeRFSRAMDecodingProcess().
|
staticprivate |
Tells whether the given guard set contains similar guard to the given one. Similar means the guard refers to the same FU port.
guardSet | The guard set. |
guard | The guard. |
Definition at line 3970 of file DefaultDecoderGenerator.cc.
References TTAMachine::PortGuard::port().
Referenced by completeDecoderBlock().
|
staticprivate |
Tells whether the given guard set contains similar guard to the given one. Similar means the guard refers to the same register.
guardSet | The guard set. |
guard | The guard. |
Definition at line 3995 of file DefaultDecoderGenerator.cc.
References TTAMachine::RegisterGuard::registerFile(), and TTAMachine::RegisterGuard::registerIndex().
|
staticprivate |
Returns the number of bits required to control from which port the data is written to the bus.
socket | The socket. |
Definition at line 4680 of file DefaultDecoderGenerator.cc.
References MathTools::bitLength(), TTAMachine::Socket::direction(), and TTAMachine::Socket::portCount().
Referenced by completeDecoderBlock(), and writeSocketCntrlSignals().
|
staticprivate |
Returns the name of the signal for the destination field of the given bus.
busName | Name of the bus. |
Definition at line 4555 of file DefaultDecoderGenerator.cc.
Referenced by portCodeCondition(), rfOpcodeFromSrcOrDstField(), socketEncodingCondition(), writeControlRulesOfFUInputPort(), writeInstructionDismembering(), and writeMoveFieldSignals().
|
private |
Finds the guard that is referred to by the given port guard encoding.
encoding | The encoding. |
Definition at line 4086 of file DefaultDecoderGenerator.cc.
References assert, TTAMachine::Machine::busNavigator(), FUGuardEncoding::functionUnit(), TTAMachine::Bus::guard(), TTAMachine::Bus::guardCount(), GuardEncoding::isGuardInverted(), TTAMachine::Guard::isInverted(), TTAMachine::Machine::Navigator< ComponentType >::item(), machine_, TTAMachine::Port::name(), MoveSlot::name(), TTAMachine::Component::name(), GuardEncoding::parent(), GuardField::parent(), TTAMachine::BaseFUPort::parentUnit(), FUGuardEncoding::port(), and TTAMachine::PortGuard::port().
|
private |
Finds the guard that is referred to by the given register guard encoding.
encoding | The encoding. |
Definition at line 4056 of file DefaultDecoderGenerator.cc.
References assert, TTAMachine::Machine::busNavigator(), TTAMachine::Bus::guard(), TTAMachine::Bus::guardCount(), GuardEncoding::isGuardInverted(), TTAMachine::Guard::isInverted(), TTAMachine::Machine::Navigator< ComponentType >::item(), machine_, MoveSlot::name(), TTAMachine::Component::name(), GuardEncoding::parent(), GuardField::parent(), GPRGuardEncoding::registerFile(), TTAMachine::RegisterGuard::registerFile(), GPRGuardEncoding::registerIndex(), and TTAMachine::RegisterGuard::registerIndex().
Referenced by writeSquashSignalGenerationProcess().
|
staticprivate |
Returns the name of the load control port for the given FU port.
fuName | Name of the FU. |
portName | Name of the FU data port. |
Definition at line 4186 of file DefaultDecoderGenerator.cc.
Referenced by completeDecoderBlock(), fuLoadSignalName(), and writeControlRegisterMappings().
|
staticprivate |
Returns the name for the signal of load control port of the given FU port.
fuName | Name of the FU. |
portName | Name of the FU data port. |
Definition at line 4203 of file DefaultDecoderGenerator.cc.
References fuLoadCntrlPort().
Referenced by writeControlRegisterMappings(), writeControlRulesOfFUInputPort(), and writeFUCntrlSignals().
|
staticprivate |
Returns the name of the opcode control port for the given FU.
fu | Name of the FU. |
Definition at line 4218 of file DefaultDecoderGenerator.cc.
Referenced by completeDecoderBlock(), fuOpcodeSignalName(), and writeControlRegisterMappings().
|
staticprivate |
Returns the name for the signal of opcode control port of the given FU.
fu | Name of the FU. |
Definition at line 4230 of file DefaultDecoderGenerator.cc.
References fuOpcodeCntrlPort().
Referenced by writeControlRegisterMappings(), writeControlRulesOfFUInputPort(), and writeFUCntrlSignals().
|
staticprivate |
Returns the real name of the GCU data port that has the given name in ADF.
nameInADF | Name of the port in ADF. |
Definition at line 4628 of file DefaultDecoderGenerator.cc.
void DefaultDecoderGenerator::generateInstructionDecoder | ( | const ProGe::NetlistGenerator & | nlGenerator, |
const std::string & | dstDirectory | ||
) |
Writes the instruction decoder to the given destination directory.
dstDirectory | The destination directory. |
IOException | If an IO error occurs. |
Definition at line 666 of file DefaultDecoderGenerator.cc.
References __func__, FileSystem::createFile(), FileSystem::DIRECTORY_SEPARATOR, language_, nlGenerator_, ProGe::Verilog, and writeInstructionDecoder().
int DefaultDecoderGenerator::glockPortWidth | ( | ) | const |
Returns the width of the global lock port.
Definition at line 613 of file DefaultDecoderGenerator.cc.
References TTAMachine::Machine::Navigator< ComponentType >::count(), TTAMachine::Machine::functionUnitNavigator(), CentralizedControlICGenerator::hasGlockPort(), ProGe::NetlistGenerator::hasGlockPort(), icGenerator_, TTAMachine::Machine::immediateUnitNavigator(), TTAMachine::Machine::Navigator< ComponentType >::item(), machine_, ProGe::NetlistGenerator::netlistBlock(), nlGenerator_, TTAMachine::Unit::portCount(), and TTAMachine::Machine::registerFileNavigator().
Referenced by addGlockPortToDecoder(), writeGlockMapping(), and writeInstructionDecoder().
int DefaultDecoderGenerator::glockRequestWidth | ( | ) | const |
Returns the width of the global lock request port.
Definition at line 585 of file DefaultDecoderGenerator.cc.
References TTAMachine::Machine::Navigator< ComponentType >::count(), TTAMachine::Machine::functionUnitNavigator(), generateDebugger_, ProGe::NetlistGenerator::hasGlockReqPort(), TTAMachine::Machine::Navigator< ComponentType >::item(), machine_, ProGe::NetlistGenerator::netlistBlock(), nlGenerator_, and TTAMachine::Unit::portCount().
Referenced by addLockReqPortToDecoder(), writeGlockMapping(), and writeInstructionDecoder().
|
staticprivate |
Returns the name of the signal for the guard field of the given bus.
busName | Name of the bus. |
Definition at line 4567 of file DefaultDecoderGenerator.cc.
Referenced by writeInstructionDismembering(), writeMoveFieldSignals(), and writeSquashSignalGenerationProcess().
|
staticprivate |
Returns the name of the guard port in decoder for the given guard.
guard | The guard. |
Definition at line 4492 of file DefaultDecoderGenerator.cc.
References TTAMachine::Port::name(), TTAMachine::Component::name(), TTAMachine::BaseFUPort::parentUnit(), TTAMachine::PortGuard::port(), TTAMachine::RegisterGuard::registerFile(), TTAMachine::RegisterGuard::registerIndex(), and Conversion::toString().
Referenced by completeDecoderBlock(), writeSquashSignalGenerationProcess(), and writeSquashSignalSubstitution().
|
staticprivate |
Returns the name of the signal for the given immediate slot.
immSlot | Name of the immediate slot. |
Definition at line 4579 of file DefaultDecoderGenerator.cc.
Referenced by writeImmediateSlotSignals(), and writeInstructionDismembering().
|
staticprivate |
Generates an indentation of the given level.
level | The level. |
Definition at line 4937 of file DefaultDecoderGenerator.cc.
Referenced by writeBusControlRulesOfOutputSocket(), writeBusControlRulesOfSImmSocketOfBus(), writeComment(), writeControlRegisterMappings(), writeControlRulesOfFUInputPort(), writeControlRulesOfFUOutputPort(), writeControlRulesOfRFReadPort(), writeControlRulesOfRFWritePort(), writeGlockMapping(), writeInstructionDecoder(), writeInstructionDismembering(), writeInstructionTemplateProcedures(), writeLockDumpCode(), writeLongImmediateWriteProcess(), writeMainDecodingProcess(), writePipelineFillProcess(), writeResettingOfControlRegisters(), writeRFCntrlSignals(), writeRFSRAMDecodingProcess(), writeRulesForSourceControlSignals(), writeSignalDeclaration(), writeSimmDataSignal(), writeSquashSignalGenerationProcess(), writeSquashSignals(), and writeSquashSignalSubstitution().
|
private |
Returns the condition when the instruction is of the given template.
iTempName | Name of the instruction template. |
Definition at line 4822 of file DefaultDecoderGenerator.cc.
References assert, bem_, BinaryEncoding::hasImmediateControlField(), ImmediateControlField::hasTemplateEncoding(), BinaryEncoding::immediateControlField(), LIMM_TAG_SIGNAL, ImmediateControlField::templateEncoding(), Conversion::toString(), and ProGe::VHDL.
Referenced by writeLongImmediateWriteProcess().
|
staticprivate |
Returns the name of the load control port of the given IU read port in in decoder.
unitName | Name of the IU. |
portName | Name of the read port. |
Definition at line 4356 of file DefaultDecoderGenerator.cc.
Referenced by completeDecoderBlock(), iuReadLoadCntrlSignal(), writeControlRegisterMappings(), writeControlRulesOfRFReadPort(), and writeRFCntrlSignals().
|
staticprivate |
Returns the name of the load control signal of the given IU read port in in decoder.
unitName | Name of the IU. |
portName | Name of the read port. |
Definition at line 4373 of file DefaultDecoderGenerator.cc.
References iuReadLoadCntrlPort().
Referenced by writeControlRegisterMappings(), writeControlRulesOfRFReadPort(), and writeRFCntrlSignals().
|
staticprivate |
Returns the name of the opcode control port of the given IU read port in decoder.
unitName | Name of the IU. |
portName | Name of the read port. |
Definition at line 4322 of file DefaultDecoderGenerator.cc.
Referenced by completeDecoderBlock(), iuReadOpcodeCntrlSignal(), writeControlRegisterMappings(), writeControlRulesOfRFReadPort(), and writeRFCntrlSignals().
|
staticprivate |
Returns the name of the opcode control signal of the given IU read port in decoder.
unitName | Name of the IU. |
portName | Name of the read port. |
Definition at line 4339 of file DefaultDecoderGenerator.cc.
References iuReadOpcodeCntrlPort().
Referenced by writeControlRegisterMappings(), writeControlRulesOfRFReadPort(), and writeRFCntrlSignals().
|
staticprivate |
Returns the name of the load control port of the write port of the given IU in decoder.
unitName | Name of the IU. |
Definition at line 4440 of file DefaultDecoderGenerator.cc.
References iuWritePort().
Referenced by completeDecoderBlock(), iuWriteLoadCntrlSignal(), writeControlRegisterMappings(), writeInstructionTemplateProcedures(), and writeLongImmediateWriteProcess().
|
staticprivate |
Returns the name of the load control Signal of the write port of the given IU in decoder.
unitName | Name of the IU. |
Definition at line 4453 of file DefaultDecoderGenerator.cc.
References iuWriteLoadCntrlPort().
Referenced by writeControlRegisterMappings(), writeInstructionTemplateProcedures(), writeLongImmediateWriteProcess(), and writeRFCntrlSignals().
|
staticprivate |
Returns the name of the opcode control port of the write port of the given IU in decoder.
unitName | Name of the IU. |
Definition at line 4413 of file DefaultDecoderGenerator.cc.
References iuWritePort().
Referenced by completeDecoderBlock(), iuWriteOpcodeCntrlSignal(), writeControlRegisterMappings(), writeInstructionTemplateProcedures(), and writeLongImmediateWriteProcess().
|
staticprivate |
Returns the name of the opcode control signal of the write port of the given IU in decoder.
unitName | Name of the IU. |
Definition at line 4426 of file DefaultDecoderGenerator.cc.
References iuWriteOpcodeCntrlPort().
Referenced by writeControlRegisterMappings(), writeInstructionTemplateProcedures(), writeLongImmediateWriteProcess(), and writeRFCntrlSignals().
|
staticprivate |
Returns the name of the IU write port of the given IU in decoder.
iuName | Name of the IU. |
Definition at line 4388 of file DefaultDecoderGenerator.cc.
Referenced by completeDecoderBlock(), iuWriteLoadCntrlPort(), iuWriteOpcodeCntrlPort(), iuWriteSignal(), writeControlRegisterMappings(), writeInstructionTemplateProcedures(), and writeLongImmediateWriteProcess().
|
staticprivate |
Returns the name of the IU write signal of the given IU in decoder.
iuName | Name of the IU. |
Definition at line 4400 of file DefaultDecoderGenerator.cc.
References iuWritePort().
Referenced by writeControlRegisterMappings(), writeInstructionTemplateProcedures(), writeLongImmediateWriteProcess(), and writeRFCntrlSignals().
|
staticprivate |
Returns the name of the signal for the move field of the given bus.
Definition at line 4481 of file DefaultDecoderGenerator.cc.
Referenced by writeInstructionDismembering(), and writeMoveFieldSignals().
|
staticprivate |
Tells whether the given socket needs controlling from which bus data is read or to which it is written.
socket | The socket. |
Definition at line 4020 of file DefaultDecoderGenerator.cc.
References TTAMachine::Socket::direction(), TTAMachine::Socket::portCount(), and TTAMachine::Socket::segmentCount().
Referenced by completeDecoderBlock(), writeControlRegisterMappings(), writeControlRulesOfFUInputPort(), writeControlRulesOfRFWritePort(), and writeSocketCntrlSignals().
|
staticprivate |
Tells whether the given output socket needs controlling from which port the data should be written to a bus.
Definition at line 4039 of file DefaultDecoderGenerator.cc.
References TTAMachine::Socket::direction(), and TTAMachine::Socket::portCount().
Referenced by completeDecoderBlock(), writeControlRegisterMappings(), writeControlRulesOfRFReadPort(), and writeSocketCntrlSignals().
|
private |
Returns the opcode of the given operation.
operation | The operation. |
Definition at line 4906 of file DefaultDecoderGenerator.cc.
References assert, TTAMachine::Machine::controlUnit(), ProGe::CUOpcodeGenerator::encoding(), machine_, TTAMachine::HWOperation::name(), TTAMachine::Component::name(), TTAMachine::FunctionUnit::operation(), TTAMachine::FunctionUnit::operationCount(), and TTAMachine::HWOperation::parentUnit().
Referenced by writeControlRulesOfFUInputPort().
|
private |
Returns the width of the opcode of the given FU.
fu | The FU. |
Definition at line 4640 of file DefaultDecoderGenerator.cc.
References TTAMachine::Machine::controlUnit(), ProGe::NetlistGenerator::instructionDecoder(), machine_, nlGenerator_, TTAMachine::FunctionUnit::operationCount(), ProGe::NetlistBlock::port(), and ProGe::NetlistPort::realWidth().
Referenced by completeDecoderBlock(), and writeFUCntrlSignals().
|
staticprivate |
Returns the condition when given port code of the given socket encoding is true.
socketEnc | The socket encoding; |
code | The RF port code. |
Definition at line 4772 of file DefaultDecoderGenerator.cc.
References assert, SlotField::componentIDPosition(), dstFieldSignal(), PortCode::encoding(), PortCode::encodingWidth(), PortCode::indexWidth(), MoveSlot::name(), SocketEncoding::parent(), SlotField::parent(), BinaryEncoding::RIGHT, SocketEncoding::socketIDWidth(), srcFieldSignal(), Conversion::toString(), and ProGe::VHDL.
Referenced by writeControlRulesOfFUInputPort(), writeControlRulesOfFUOutputPort(), writeControlRulesOfRFReadPort(), and writeControlRulesOfRFWritePort().
std::set< int > DefaultDecoderGenerator::requiredRFLatencies | ( | const TTAMachine::ImmediateUnit & | iu | ) | const |
Returns the set of acceptable latencies of the hardware implementation of the given immediate unit.
iu | The immediate unit. |
Definition at line 692 of file DefaultDecoderGenerator.cc.
|
staticprivate |
Returns the name of the load control port of the given RF data port.
rfName | Name of the RF. |
portName | Name of the RF data port. |
Definition at line 4243 of file DefaultDecoderGenerator.cc.
Referenced by completeDecoderBlock(), rfLoadSignalName(), and writeControlRegisterMappings().
|
staticprivate |
Returns the name for the load control signal for the given RF port.
rfName | Name of the RF. |
portName | Name of the RF data port. |
async | Flag to generate name for asynchronous signal. Default value is false. |
Definition at line 4261 of file DefaultDecoderGenerator.cc.
References rfLoadCntrlPort().
Referenced by writeControlRegisterMappings(), writeControlRulesOfRFReadPort(), writeControlRulesOfRFWritePort(), writeRFCntrlSignals(), and writeRFSRAMDecodingProcess().
|
staticprivate |
Returns the name of the opcode control port of the given RF port.
rfName | Name of the RF. |
portName | Name of the RF data port. |
Definition at line 4305 of file DefaultDecoderGenerator.cc.
Referenced by completeDecoderBlock(), rfOpcodeSignalName(), and writeControlRegisterMappings().
|
staticprivate |
Returns the part of the source or destination field signal that contains the opcode of the given RF port code.
socketEnc | The socket encoding. |
code | The RF port code. |
Definition at line 4847 of file DefaultDecoderGenerator.cc.
References SlotField::componentIDPosition(), dstFieldSignal(), PortCode::indexWidth(), MoveSlot::name(), SocketEncoding::parent(), SlotField::parent(), BinaryEncoding::RIGHT, SocketEncoding::socketCodes(), srcFieldSignal(), Conversion::toString(), ProGe::VHDL, SlotField::width(), and SocketCodeTable::width().
Referenced by writeControlRulesOfRFReadPort(), and writeControlRulesOfRFWritePort().
|
staticprivate |
Returns the name for the signal of opcode control port of the given RF port.
rfName | Name of the register file. |
portName | Name of the RF data port. |
async | Flag to generate name for asynchronous signal. Default value is false. |
Definition at line 4285 of file DefaultDecoderGenerator.cc.
References rfOpcodeCntrlPort().
Referenced by writeControlRegisterMappings(), writeControlRulesOfRFReadPort(), writeControlRulesOfRFWritePort(), writeRFCntrlSignals(), and writeRFSRAMDecodingProcess().
|
staticprivate |
Returns the width of the opcode port in the given RF.
rf | The register file. |
Definition at line 4696 of file DefaultDecoderGenerator.cc.
References MathTools::bitLength(), and TTAMachine::BaseRegisterFile::numberOfRegisters().
Referenced by completeDecoderBlock(), writeControlRegisterMappings(), writeInstructionTemplateProcedures(), writeLongImmediateWriteProcess(), writeRFCntrlSignals(), and writeRFSRAMDecodingProcess().
|
private |
Queries if given register file by name has separate address cycle (SAC) flag enabled.
rfName | Name of register file in ADF. |
Definition at line 4953 of file DefaultDecoderGenerator.cc.
References assert, HDB::RFEntry::implementation(), nlGenerator_, ProGe::NetlistGenerator::rfEntry(), and HDB::RFImplementation::separateAddressCycleParameter().
Referenced by writeControlRegisterMappings(), writeControlRulesOfRFReadPort(), writeRFCntrlSignals(), writeRFSRAMDecodingProcess(), and writeRulesForSourceControlSignals().
void DefaultDecoderGenerator::setGenerateBusEnable | ( | bool | value | ) |
Definition at line 192 of file DefaultDecoderGenerator.cc.
References generateBusEnable_.
void DefaultDecoderGenerator::setGenerateDebugger | ( | bool | generate | ) |
Definition at line 182 of file DefaultDecoderGenerator.cc.
References generateDebugger_.
void DefaultDecoderGenerator::setGenerateLockTrace | ( | bool | generate | ) |
Controls whenever global lock trace dump process will be generated.
generate | Generate lock trace process if true. |
Definition at line 759 of file DefaultDecoderGenerator.cc.
References generateLockTrace_.
void DefaultDecoderGenerator::setGenerateNoLoopbackGlock | ( | bool | generate | ) |
Generates alternate global lock wiring where FU will not receive global lock back if the FU did request the lock unless there are other FUs requesting global lock.
generate | Set to true enables the feature. |
Definition at line 204 of file DefaultDecoderGenerator.cc.
References generateAlternateGlockReqHandling_.
void DefaultDecoderGenerator::SetHDL | ( | ProGe::HDL | language | ) |
SetHDL.
language | The HDL language. |
Definition at line 177 of file DefaultDecoderGenerator.cc.
References language_.
void DefaultDecoderGenerator::setLockTraceStartingCycle | ( | unsigned int | startCycle | ) |
Sets starting cycle to begin global lock tracing.
startCycle | nth cycle to begin tracing. |
Definition at line 769 of file DefaultDecoderGenerator.cc.
References lockTraceStartingCycle_.
void DefaultDecoderGenerator::setSyncReset | ( | bool | value | ) |
Definition at line 187 of file DefaultDecoderGenerator.cc.
References syncReset_.
|
staticprivate |
Returns the name of the short immediate control signal of the given bus.
busName | Name of the bus. |
Definition at line 4173 of file DefaultDecoderGenerator.cc.
Referenced by writeBusControlRulesOfSImmSocketOfBus(), writeControlRegisterMappings(), and writeSocketCntrlSignals().
|
staticprivate |
Returns the name of the control port for short immediate of the given bus.
busName | Name of the bus. |
Definition at line 4130 of file DefaultDecoderGenerator.cc.
Referenced by completeDecoderBlock(), and writeControlRegisterMappings().
|
staticprivate |
Returns the name of the data port for short immediate of the given bus.
busName | Name of the bus. |
Definition at line 4117 of file DefaultDecoderGenerator.cc.
Referenced by completeDecoderBlock(), and writeControlRegisterMappings().
|
staticprivate |
Returns the name of the short immediate data signal.
busName | Name of the bus that transports the short immediate. |
Definition at line 4161 of file DefaultDecoderGenerator.cc.
Referenced by writeBusControlRulesOfSImmSocketOfBus(), writeControlRegisterMappings(), writeSimmDataSignal(), and writeSocketCntrlSignals().
|
staticprivate |
Returns the required width of the short immediate port of the given bus.
bus | The bus. |
Definition at line 4142 of file DefaultDecoderGenerator.cc.
References assert, TTAMachine::Bus::immediateWidth(), TTAMachine::Bus::signExtends(), TTAMachine::Bus::width(), and TTAMachine::Bus::zeroExtends().
Referenced by completeDecoderBlock(), and writeSocketCntrlSignals().
|
staticprivate |
Returns the name of the bus connection control signal for the socket of the given name.
name | Name of the socket. |
Definition at line 4604 of file DefaultDecoderGenerator.cc.
References socketBusControlPort().
Referenced by busCntrlSignalPinOfSocket(), writeControlRegisterMappings(), writeControlRulesOfFUInputPort(), writeControlRulesOfRFWritePort(), and writeSocketCntrlSignals().
|
staticprivate |
Returns the name of the bus connection control port of the given socket.
name | Name of the socket. |
Definition at line 4518 of file DefaultDecoderGenerator.cc.
Referenced by completeDecoderBlock(), socketBusCntrlSignalName(), and writeControlRegisterMappings().
|
staticprivate |
Returns the name of the data control signal for the socket of the given name.
name | Name of the socket. |
Definition at line 4617 of file DefaultDecoderGenerator.cc.
References socketDataControlPort().
Referenced by writeControlRegisterMappings(), writeControlRulesOfFUOutputPort(), writeControlRulesOfRFReadPort(), and writeSocketCntrlSignals().
|
staticprivate |
Returns the name of the data control port of the given socket.
name | Name of the socket. |
Definition at line 4530 of file DefaultDecoderGenerator.cc.
Referenced by completeDecoderBlock(), socketDataCntrlSignalName(), and writeControlRegisterMappings().
|
staticprivate |
Returns the condition when data is transferred by the given socket in the given source field.
srcField | The source field. |
socketName | Name of the socket. |
Definition at line 4727 of file DefaultDecoderGenerator.cc.
References dstFieldSignal(), Encoding::encoding(), MoveSlot::name(), SlotField::parent(), SlotField::socketEncoding(), SocketEncoding::socketIDPosition(), SocketEncoding::socketIDWidth(), srcFieldSignal(), Conversion::toString(), and ProGe::VHDL.
Referenced by writeBusControlRulesOfOutputSocket(), writeControlRulesOfFUInputPort(), writeControlRulesOfFUOutputPort(), writeControlRulesOfRFReadPort(), and writeControlRulesOfRFWritePort().
|
staticprivate |
Returns the name of the squash signal for the given bus.
busName | Name of the bus. |
Definition at line 4591 of file DefaultDecoderGenerator.cc.
Referenced by writeBusControlRulesOfOutputSocket(), writeBusControlRulesOfSImmSocketOfBus(), writeControlRulesOfFUInputPort(), writeControlRulesOfFUOutputPort(), writeControlRulesOfRFReadPort(), writeControlRulesOfRFWritePort(), writeRFSRAMDecodingProcess(), writeSquashSignalGenerationProcess(), writeSquashSignals(), and writeSquashSignalSubstitution().
|
staticprivate |
Returns the name of the signal for the source field of the given bus.
busName | Name of the bus. |
Definition at line 4542 of file DefaultDecoderGenerator.cc.
Referenced by portCodeCondition(), rfOpcodeFromSrcOrDstField(), socketEncodingCondition(), writeBusControlRulesOfSImmSocketOfBus(), writeControlRulesOfFUInputPort(), writeInstructionDismembering(), writeMoveFieldSignals(), writeRFSRAMDecodingProcess(), and writeSimmDataSignal().
void DefaultDecoderGenerator::verifyCompatibility | ( | ) | const |
Verifies that the decoder generator is compatible with the machine.
InvalidData | If the decoder generator is incompatible. |
Definition at line 704 of file DefaultDecoderGenerator.cc.
References __func__, APC, assert, BEQR, BGER, BGEUR, BLTR, BLTUR, BNER, CALL, CALLA, CALLR, TTAMachine::Machine::controlUnit(), TTAMachine::ControlUnit::delaySlots(), MachineInfo::getOpset(), TTAMachine::ControlUnit::globalGuardLatency(), TTAMachine::Machine::hasOperation(), TTAMachine::Machine::isRISCVMachine(), JUMP, machine_, TCEString::makeString(), TTAMachine::Unit::outputPortCount(), THROW_EXCEPTION, and Conversion::toString().
|
private |
Writes the control signal rules of the given output socket.
socket | The socket. |
stream | The stream to write. |
Definition at line 2731 of file DefaultDecoderGenerator.cc.
References assert, bem_, busCntrlSignalPinOfSocket(), connectedBuses(), TTAMachine::Socket::direction(), indentation(), language_, BinaryEncoding::moveSlot(), TTAMachine::Component::name(), socketEncodingCondition(), MoveSlot::sourceField(), squashSignal(), ProGe::Verilog, and ProGe::VHDL.
Referenced by writeRulesForSourceControlSignals().
|
private |
Writes the control signal rules for the socket that transports the short immediate to the given bus.
bus | The bus. |
stream | The stream to write. |
Definition at line 2806 of file DefaultDecoderGenerator.cc.
References assert, bem_, Encoding::encoding(), ImmediateEncoding::encodingPosition(), ImmediateEncoding::encodingWidth(), SourceField::hasImmediateEncoding(), SourceField::immediateEncoding(), ImmediateEncoding::immediatePosition(), ImmediateEncoding::immediateWidth(), TTAMachine::Bus::immediateWidth(), indentation(), language_, BinaryEncoding::moveSlot(), TTAMachine::Component::name(), TTAMachine::Bus::signExtends(), simmCntrlSignalName(), simmDataSignalName(), MoveSlot::sourceField(), squashSignal(), srcFieldSignal(), ProGe::VHDL, and writeSimmDataSignal().
Referenced by writeRulesForSourceControlSignals().
|
private |
|
private |
Definition at line 795 of file DefaultDecoderGenerator.cc.
References indentation(), language_, and ProGe::VHDL.
Referenced by writeFUCntrlSignals(), writeImmediateSlotSignals(), writeLongImmediateTagSignal(), writeMoveFieldSignals(), writeRFCntrlSignals(), writeRulesForDestinationControlSignals(), writeRulesForSourceControlSignals(), and writeSocketCntrlSignals().
|
private |
Writes the mappings of control registers to control ports to the given stream.
stream | The stream. |
Definition at line 3547 of file DefaultDecoderGenerator.cc.
References assert, TTAMachine::Machine::busNavigator(), CALL, TTAMachine::Machine::controlUnit(), TTAMachine::Machine::Navigator< ComponentType >::count(), decoderBlock_, fuLoadCntrlPort(), fuLoadSignalName(), fuOpcodeCntrlPort(), fuOpcodeSignalName(), TTAMachine::FunctionUnit::hasOperation(), TTAMachine::ControlUnit::hasReturnAddressPort(), TTAMachine::Machine::immediateUnitNavigator(), TTAMachine::Bus::immediateWidth(), indentation(), TTAMachine::Port::inputSocket(), TTAMachine::Port::isInput(), TTAMachine::Machine::isRISCVMachine(), TTAMachine::BaseFUPort::isTriggering(), TTAMachine::Machine::Navigator< ComponentType >::item(), iuReadLoadCntrlPort(), iuReadLoadCntrlSignal(), iuReadOpcodeCntrlPort(), iuReadOpcodeCntrlSignal(), iuWriteLoadCntrlPort(), iuWriteLoadCntrlSignal(), iuWriteOpcodeCntrlPort(), iuWriteOpcodeCntrlSignal(), iuWritePort(), iuWriteSignal(), JUMP, language_, machine_, TTAMachine::Port::name(), TTAMachine::Component::name(), needsBusControl(), needsDataControl(), TTAMachine::FunctionUnit::operation(), TTAMachine::FunctionUnit::operationCount(), TTAMachine::Port::outputSocket(), TTAMachine::BaseRegisterFile::port(), TTAMachine::FunctionUnit::port(), TTAMachine::HWOperation::port(), ProGe::NetlistBlock::port(), TTAMachine::Unit::portCount(), TTAMachine::Socket::portCount(), TTAMachine::ControlUnit::returnAddressPort(), rfLoadCntrlPort(), rfLoadSignalName(), rfOpcodeCntrlPort(), rfOpcodeSignalName(), rfOpcodeWidth(), RISCV_SIMM_PORT_IN_NAME, sacEnabled(), TTAMachine::Socket::segmentCount(), simmCntrlSignalName(), simmControlPort(), simmDataPort(), simmDataSignalName(), socketBusCntrlSignalName(), socketBusControlPort(), socketDataCntrlSignalName(), socketDataControlPort(), TTAMachine::Machine::socketNavigator(), TTAMachine::FunctionUnit::triggerPort(), and ProGe::VHDL.
Referenced by writeInstructionDecoder().
|
private |
Writes the rules for control signals related to the given FU input port.
port | The port. |
stream | The stream to write. |
Definition at line 3138 of file DefaultDecoderGenerator.cc.
References assert, bem_, CALL, SlotField::componentIDPosition(), connectedBuses(), MoveSlot::destinationField(), dstFieldSignal(), PortCode::encoding(), PortCode::encodingWidth(), fuLoadSignalName(), fuOpcodeSignalName(), SocketCodeTable::fuPortCode(), TTAMachine::FunctionUnit::hasOperation(), SocketEncoding::hasSocketCodes(), icGenerator_, indentation(), PortCode::indexWidth(), TTAMachine::Port::inputSocket(), CentralizedControlICGenerator::inputSocketControlValue(), TTAMachine::BaseFUPort::isOpcodeSetting(), JUMP, language_, BinaryEncoding::moveSlot(), TTAMachine::HWOperation::name(), TTAMachine::Port::name(), MoveSlot::name(), TTAMachine::Component::name(), needsBusControl(), opcode(), TTAMachine::FunctionUnit::operation(), TTAMachine::FunctionUnit::operationCount(), SocketEncoding::parent(), SlotField::parent(), TTAMachine::BaseFUPort::parentUnit(), TTAMachine::HWOperation::port(), portCodeCondition(), BinaryEncoding::RIGHT, TTAMachine::Bus::segment(), socketBusCntrlSignalName(), SocketEncoding::socketCodes(), SlotField::socketEncoding(), socketEncodingCondition(), SocketEncoding::socketIDWidth(), squashSignal(), srcFieldSignal(), Conversion::toString(), ProGe::Verilog, and ProGe::VHDL.
Referenced by writeRulesForDestinationControlSignals().
|
private |
Writes the data control signal rules of the socket connected to the given FU output port.
port | The port. |
stream | The stream to write. |
Definition at line 2876 of file DefaultDecoderGenerator.cc.
References assert, bem_, connectedBuses(), SocketCodeTable::fuPortCode(), SocketEncoding::hasSocketCodes(), icGenerator_, indentation(), language_, BinaryEncoding::moveSlot(), TTAMachine::Port::name(), TTAMachine::Component::name(), TTAMachine::Port::outputSocket(), CentralizedControlICGenerator::outputSocketDataControlValue(), TTAMachine::BaseFUPort::parentUnit(), portCodeCondition(), SocketEncoding::socketCodes(), socketDataCntrlSignalName(), SlotField::socketEncoding(), socketEncodingCondition(), MoveSlot::sourceField(), squashSignal(), ProGe::Verilog, and ProGe::VHDL.
Referenced by writeRulesForSourceControlSignals().
|
private |
Writes the control signal rules related to the given RF read port.
port | The RF read port. |
stream | The stream to write. |
Definition at line 2947 of file DefaultDecoderGenerator.cc.
References assert, bem_, connectedBuses(), PortCode::hasEncoding(), SocketEncoding::hasSocketCodes(), icGenerator_, indentation(), TTAMachine::Port::inputSocket(), SocketCodeTable::iuPortCode(), iuReadLoadCntrlPort(), iuReadLoadCntrlSignal(), iuReadOpcodeCntrlPort(), iuReadOpcodeCntrlSignal(), language_, BinaryEncoding::moveSlot(), TTAMachine::Port::name(), TTAMachine::Component::name(), needsDataControl(), TTAMachine::Port::outputSocket(), CentralizedControlICGenerator::outputSocketDataControlValue(), TTAMachine::RFPort::parentUnit(), portCodeCondition(), rfLoadSignalName(), rfOpcodeFromSrcOrDstField(), rfOpcodeSignalName(), SocketCodeTable::rfPortCode(), sacEnabled(), SocketEncoding::socketCodes(), socketDataCntrlSignalName(), SlotField::socketEncoding(), socketEncodingCondition(), MoveSlot::sourceField(), squashSignal(), ProGe::Verilog, and ProGe::VHDL.
Referenced by writeRFSRAMDecodingProcess(), and writeRulesForSourceControlSignals().
|
private |
Writes the rules for control signals related to the given RF write port.
port | The port. |
stream | The stream to write. |
Definition at line 3417 of file DefaultDecoderGenerator.cc.
References assert, bem_, connectedBuses(), MoveSlot::destinationField(), PortCode::hasEncoding(), SocketEncoding::hasSocketCodes(), icGenerator_, indentation(), TTAMachine::Port::inputSocket(), CentralizedControlICGenerator::inputSocketControlValue(), language_, BinaryEncoding::moveSlot(), TTAMachine::Port::name(), TTAMachine::Component::name(), needsBusControl(), TTAMachine::RFPort::parentUnit(), portCodeCondition(), rfLoadSignalName(), rfOpcodeFromSrcOrDstField(), rfOpcodeSignalName(), SocketCodeTable::rfPortCode(), TTAMachine::Bus::segment(), socketBusCntrlSignalName(), SocketEncoding::socketCodes(), SlotField::socketEncoding(), socketEncodingCondition(), squashSignal(), Conversion::toString(), ProGe::Verilog, and ProGe::VHDL.
Referenced by writeRulesForDestinationControlSignals().
|
private |
|
private |
Writes the control signals of the given FU to the given stream.
fu | The FU. |
stream | The stream to write. |
Definition at line 1279 of file DefaultDecoderGenerator.cc.
References ProGe::BIT, ProGe::BIT_VECTOR, fuLoadSignalName(), fuOpcodeSignalName(), TTAMachine::Port::inputSocket(), TTAMachine::Port::name(), TTAMachine::Component::name(), opcodeWidth(), TTAMachine::FunctionUnit::port(), TTAMachine::Unit::portCount(), registerBits, registerVectors, and writeSignalDeclaration().
|
private |
Writes the FU control signals to the given stream.
stream | The stream. |
Definition at line 1256 of file DefaultDecoderGenerator.cc.
References TTAMachine::Machine::controlUnit(), TTAMachine::Machine::Navigator< ComponentType >::count(), TTAMachine::Machine::Navigator< ComponentType >::item(), machine_, and writeComment().
Referenced by writeInstructionDecoder().
|
private |
|
private |
Definition at line 1386 of file DefaultDecoderGenerator.cc.
References assert, ProGe::BIT, INTERNAL_MERGED_GLOCK_REQ_SIGNAL, language_, POST_DECODE_MERGED_GLOCK_OUTREG, POST_DECODE_MERGED_GLOCK_SIGNAL, PRE_DECODE_MERGED_GLOCK_SIGNAL, ProGe::VHDL, and writeSignalDeclaration().
Referenced by writeInstructionDecoder().
|
private |
Generates global lock and lock request wiring.
Definition at line 2404 of file DefaultDecoderGenerator.cc.
References assert, MapTools::containsKey(), generateAlternateGlockReqHandling_, GLOCK_PORT_NAME, glockPortWidth(), glockRequestWidth(), indentation(), INTERNAL_MERGED_GLOCK_REQ_SIGNAL, language_, LOCK_REQ_PORT_NAME, PIPELINE_FILL_LOCK_SIGNAL, POST_DECODE_MERGED_GLOCK_OUTREG, POST_DECODE_MERGED_GLOCK_SIGNAL, PRE_DECODE_MERGED_GLOCK_SIGNAL, syncReset_, Conversion::toString(), unitGlockBitMap_, unitGlockReqBitMap_, and ProGe::VHDL.
Referenced by writeInstructionDecoder().
|
private |
Writes the signals for dedicated immediate slots to the given stream.
stream | The stream. |
Definition at line 1135 of file DefaultDecoderGenerator.cc.
References bem_, ProGe::BIT_VECTOR, BinaryEncoding::immediateSlot(), BinaryEncoding::immediateSlotCount(), immSlotSignal(), ImmediateSlotField::name(), ImmediateSlotField::width(), writeComment(), and writeSignalDeclaration().
Referenced by writeInstructionDecoder().
|
private |
Writes the instruction decoder to the given stream.
stream | The stream. |
Definition at line 807 of file DefaultDecoderGenerator.cc.
References decoderBlock_, FileSystem::DIRECTORY_SEPARATOR, DS, entityNameStr_, generateLockTrace_, GLOCK_PORT_NAME, glockPortWidth(), glockRequestWidth(), indentation(), language_, LOCK_REQ_PORT_NAME, Conversion::toString(), ProGe::VHDL, writeControlRegisterMappings(), writeFUCntrlSignals(), writeGlockHandlingSignals(), writeGlockMapping(), writeImmediateSlotSignals(), writeInstructionDismembering(), writeLockDumpCode(), writeLongImmediateTagSignal(), writeLongImmediateWriteProcess(), writeMainDecodingProcess(), writeMoveFieldSignals(), writePipelineFillProcess(), writePipelineFillSignals(), writeRFCntrlSignals(), writeRFSRAMDecodingProcess(), writeSocketCntrlSignals(), writeSquashSignalGenerationProcesses(), and writeSquashSignals().
Referenced by generateInstructionDecoder().
|
private |
Writes the instruction decoding section to the main process in decoder.
stream | The stream to write. |
Definition at line 2583 of file DefaultDecoderGenerator.cc.
References writeRulesForDestinationControlSignals(), and writeRulesForSourceControlSignals().
Referenced by writeMainDecodingProcess().
|
private |
Writes dismembering of instruction word to signals to the given stream.
stream | The stream. |
Definition at line 1414 of file DefaultDecoderGenerator.cc.
References bem_, InstructionField::bitPosition(), MoveSlot::destinationField(), dstFieldSignal(), MoveSlot::guardField(), guardFieldSignal(), MoveSlot::hasDestinationField(), MoveSlot::hasGuardField(), BinaryEncoding::hasImmediateControlField(), MoveSlot::hasSourceField(), BinaryEncoding::immediateControlField(), BinaryEncoding::immediateSlot(), BinaryEncoding::immediateSlotCount(), immSlotSignal(), indentation(), language_, LIMM_TAG_SIGNAL, moveFieldSignal(), BinaryEncoding::moveSlot(), BinaryEncoding::moveSlotCount(), ImmediateSlotField::name(), MoveSlot::name(), MoveSlot::sourceField(), srcFieldSignal(), ProGe::VHDL, ImmediateSlotField::width(), SourceField::width(), ImmediateControlField::width(), SlotField::width(), MoveSlot::width(), and GuardField::width().
Referenced by writeInstructionDecoder().
|
private |
Writes the procedures required if the instruction is of the given instruction template.
iTemp | The instruction template. |
indLevel | The indentation level. |
stream | The stream to write. |
Definition at line 1955 of file DefaultDecoderGenerator.cc.
References bem_, InstructionField::bitPosition(), TTAMachine::Machine::busNavigator(), TTAMachine::Machine::Navigator< ComponentType >::count(), TTAMachine::ImmediateUnit::extensionMode(), TTAMachine::Machine::Navigator< ComponentType >::hasItem(), BinaryEncoding::immediateSlot(), TTAMachine::Machine::immediateUnitNavigator(), indentation(), TTAMachine::InstructionTemplate::isOneOfDestinations(), TTAMachine::Machine::Navigator< ComponentType >::item(), iuWriteLoadCntrlPort(), iuWriteLoadCntrlSignal(), iuWriteOpcodeCntrlPort(), iuWriteOpcodeCntrlSignal(), iuWritePort(), iuWriteSignal(), BinaryEncoding::longImmDstRegisterField(), machine_, BinaryEncoding::moveSlot(), TTAMachine::Component::name(), TTAMachine::BaseRegisterFile::numberOfRegisters(), TTAMachine::InstructionTemplate::numberOfSlots(), rfOpcodeWidth(), TTAMachine::InstructionTemplate::slotCount(), TTAMachine::InstructionTemplate::slotOfDestination(), TTAMachine::InstructionTemplate::supportedWidth(), ProGe::VHDL, and TTAMachine::BaseRegisterFile::width().
Referenced by writeLongImmediateWriteProcess().
|
private |
void writeDecompressSignalsVHDL(std::ostream& stream) const; TBR
Writes process that captures state of global lock per clock cycle.
The captured contents are dumped into an output file.
stream | The stream to write. |
Definition at line 963 of file DefaultDecoderGenerator.cc.
References indentation(), language_, lockTraceStartingCycle_, POST_DECODE_MERGED_GLOCK_SIGNAL, and ProGe::VHDL.
Referenced by writeInstructionDecoder().
|
private |
Writes the signal for long immediate tag to the given stream.
stream | The stream. |
Definition at line 1152 of file DefaultDecoderGenerator.cc.
References bem_, ProGe::BIT_VECTOR, BinaryEncoding::hasImmediateControlField(), BinaryEncoding::immediateControlField(), LIMM_TAG_SIGNAL, ImmediateControlField::width(), writeComment(), and writeSignalDeclaration().
Referenced by writeInstructionDecoder().
|
private |
Writes the process that writes long immediates to immediate units.
stream | The stream to write. |
Definition at line 1801 of file DefaultDecoderGenerator.cc.
References bem_, TTAMachine::Machine::Navigator< ComponentType >::count(), BinaryEncoding::hasImmediateControlField(), TTAMachine::Machine::immediateUnitNavigator(), indentation(), instructionTemplateCondition(), TTAMachine::Machine::instructionTemplateNavigator(), TTAMachine::Machine::Navigator< ComponentType >::item(), iuWriteLoadCntrlPort(), iuWriteLoadCntrlSignal(), iuWriteOpcodeCntrlPort(), iuWriteOpcodeCntrlSignal(), iuWritePort(), iuWriteSignal(), language_, machine_, TTAMachine::Component::name(), PRE_DECODE_MERGED_GLOCK_SIGNAL, rfOpcodeWidth(), syncReset_, ProGe::Verilog, ProGe::VHDL, and writeInstructionTemplateProcedures().
Referenced by writeInstructionDecoder().
|
private |
Writes the main decoding process to the given stream.
stream | The stream to write. |
Definition at line 2323 of file DefaultDecoderGenerator.cc.
References generateDebugger_, indentation(), language_, PRE_DECODE_MERGED_GLOCK_SIGNAL, syncReset_, ProGe::VHDL, writeInstructionDecoding(), and writeResettingOfControlRegisters().
Referenced by writeInstructionDecoder().
|
private |
Writes the signals for source, destination and guard fields to the given stream.
stream | The stream. |
Definition at line 1096 of file DefaultDecoderGenerator.cc.
References bem_, ProGe::BIT_VECTOR, MoveSlot::destinationField(), dstFieldSignal(), MoveSlot::guardField(), guardFieldSignal(), MoveSlot::hasDestinationField(), MoveSlot::hasGuardField(), MoveSlot::hasSourceField(), moveFieldSignal(), BinaryEncoding::moveSlot(), BinaryEncoding::moveSlotCount(), MoveSlot::name(), MoveSlot::sourceField(), srcFieldSignal(), SourceField::width(), SlotField::width(), MoveSlot::width(), GuardField::width(), writeComment(), and writeSignalDeclaration().
Referenced by writeInstructionDecoder().
|
private |
|
private |
Writes process that keeps machine locked until first decoded instruction is available.
Definition at line 2518 of file DefaultDecoderGenerator.cc.
References indentation(), language_, PIPELINE_FILL_LOCK_SIGNAL, syncReset_, and ProGe::VHDL.
Referenced by writeInstructionDecoder().
|
private |
Writes signals used in decode pipeline fill process.
Definition at line 1403 of file DefaultDecoderGenerator.cc.
References ProGe::BIT, PIPELINE_FILL_LOCK_SIGNAL, and writeSignalDeclaration().
Referenced by writeInstructionDecoder().
|
private |
Writes resetting of all the control registers to the given stream.
stream | The stream. |
Definition at line 2558 of file DefaultDecoderGenerator.cc.
References indentation(), language_, registerBits, registerVectors, and ProGe::Verilog.
Referenced by writeMainDecodingProcess().
|
private |
Writes the RF control signals to the given stream.
stream | The stream. |
Definition at line 1307 of file DefaultDecoderGenerator.cc.
References ProGe::BIT, ProGe::BIT_VECTOR, TTAMachine::Machine::Navigator< ComponentType >::count(), TTAMachine::Machine::immediateUnitNavigator(), indentation(), TTAMachine::Port::isOutput(), TTAMachine::Machine::Navigator< ComponentType >::item(), iuReadLoadCntrlPort(), iuReadLoadCntrlSignal(), iuReadOpcodeCntrlPort(), iuReadOpcodeCntrlSignal(), iuWriteLoadCntrlSignal(), iuWriteOpcodeCntrlSignal(), iuWriteSignal(), language_, machine_, TTAMachine::Port::name(), TTAMachine::Component::name(), TTAMachine::Port::outputSocket(), TTAMachine::BaseRegisterFile::port(), TTAMachine::Unit::portCount(), registerBits, registerVectors, rfLoadSignalName(), rfOpcodeSignalName(), rfOpcodeWidth(), sacEnabled(), ProGe::Verilog, ProGe::VHDL, TTAMachine::BaseRegisterFile::width(), writeComment(), and writeSignalDeclaration().
Referenced by writeInstructionDecoder().
|
private |
Writes separate combinational decoding process for SRAM register files.
stream | The stream to write. |
Definition at line 2139 of file DefaultDecoderGenerator.cc.
References assert, connectedBuses(), TTAMachine::Machine::Navigator< ComponentType >::count(), indentation(), TTAMachine::Machine::Navigator< ComponentType >::item(), language_, machine_, TTAMachine::Port::name(), TTAMachine::Component::name(), TTAMachine::Port::outputSocket(), TTAMachine::BaseRegisterFile::port(), TTAMachine::Unit::portCount(), TTAMachine::Machine::registerFileNavigator(), rfLoadSignalName(), rfOpcodeSignalName(), rfOpcodeWidth(), sacEnabled(), squashSignal(), srcFieldSignal(), ProGe::VHDL, and writeControlRulesOfRFReadPort().
Referenced by writeInstructionDecoder().
|
private |
Writes the rules for destination control signals to the instruction decoding section.
stream | The stream to write. |
Definition at line 2689 of file DefaultDecoderGenerator.cc.
References TTAMachine::Machine::controlUnit(), TTAMachine::Machine::Navigator< ComponentType >::count(), TTAMachine::Machine::functionUnitNavigator(), TTAMachine::Port::inputSocket(), TTAMachine::Machine::Navigator< ComponentType >::item(), machine_, TTAMachine::BaseRegisterFile::port(), TTAMachine::FunctionUnit::port(), TTAMachine::Unit::portCount(), TTAMachine::Machine::registerFileNavigator(), writeComment(), writeControlRulesOfFUInputPort(), and writeControlRulesOfRFWritePort().
Referenced by writeInstructionDecoding().
|
private |
Writes the rules for source control signals to the instruction decoding section.
stream | The stream to write. |
Definition at line 2599 of file DefaultDecoderGenerator.cc.
References TTAMachine::Machine::busNavigator(), TTAMachine::Machine::controlUnit(), TTAMachine::Machine::Navigator< ComponentType >::count(), TTAMachine::Socket::direction(), TTAMachine::Machine::functionUnitNavigator(), TTAMachine::Machine::immediateUnitNavigator(), TTAMachine::Bus::immediateWidth(), indentation(), TTAMachine::Machine::Navigator< ComponentType >::item(), language_, machine_, TTAMachine::Component::name(), TTAMachine::Port::outputSocket(), TTAMachine::BaseRegisterFile::port(), TTAMachine::FunctionUnit::port(), TTAMachine::Unit::portCount(), TTAMachine::Socket::portCount(), TTAMachine::Machine::registerFileNavigator(), sacEnabled(), TTAMachine::Socket::segmentCount(), TTAMachine::Machine::socketNavigator(), ProGe::VHDL, writeBusControlRulesOfOutputSocket(), writeBusControlRulesOfSImmSocketOfBus(), writeComment(), writeControlRulesOfFUOutputPort(), and writeControlRulesOfRFReadPort().
Referenced by writeInstructionDecoding().
|
private |
Definition at line 774 of file DefaultDecoderGenerator.cc.
References ProGe::BIT_VECTOR, indentation(), language_, and ProGe::VHDL.
Referenced by writeFUCntrlSignals(), writeGlockHandlingSignals(), writeImmediateSlotSignals(), writeLongImmediateTagSignal(), writeMoveFieldSignals(), writePipelineFillSignals(), writeRFCntrlSignals(), and writeSocketCntrlSignals().
|
private |
Definition at line 2780 of file DefaultDecoderGenerator.cc.
References bem_, SourceField::immediateEncoding(), ImmediateEncoding::immediatePosition(), ImmediateEncoding::immediateWidth(), indentation(), BinaryEncoding::moveSlot(), TTAMachine::Component::name(), TTAMachine::Bus::signExtends(), simmDataSignalName(), MoveSlot::sourceField(), and srcFieldSignal().
Referenced by writeBusControlRulesOfSImmSocketOfBus().
|
private |
Writes the socket control signals to the given stream.
stream | The stream to write. |
Definition at line 1202 of file DefaultDecoderGenerator.cc.
References ProGe::BIT, ProGe::BIT_VECTOR, busControlWidth(), busMuxEnableRegister(), TTAMachine::Machine::busNavigator(), TTAMachine::Machine::Navigator< ComponentType >::count(), dataControlWidth(), generateBusEnable_, TTAMachine::Bus::immediateWidth(), TTAMachine::Machine::Navigator< ComponentType >::item(), machine_, TTAMachine::Component::name(), needsBusControl(), needsDataControl(), TTAMachine::Socket::portCount(), registerBits, registerVectors, TTAMachine::Socket::segmentCount(), simmCntrlSignalName(), simmDataSignalName(), simmPortWidth(), socketBusCntrlSignalName(), socketDataCntrlSignalName(), TTAMachine::Machine::socketNavigator(), writeComment(), and writeSignalDeclaration().
Referenced by writeInstructionDecoder().
|
private |
Writes the generation process of squash signal for the given bus.
bus | The bus. |
stream | The stream to write. |
Definition at line 1566 of file DefaultDecoderGenerator.cc.
References TCEString::appendToNonEmpty(), assert, bem_, GuardEncoding::encoding(), findGuard(), GuardField::fuGuardEncoding(), GuardField::fuGuardEncodingCount(), GuardField::gprGuardEncoding(), GuardField::gprGuardEncodingCount(), TTAMachine::Bus::guard(), TTAMachine::Bus::guardCount(), MoveSlot::guardField(), guardFieldSignal(), guardPortName(), MoveSlot::hasGuardField(), BinaryEncoding::hasMoveSlot(), GuardField::hasUnconditionalGuardEncoding(), BinaryEncoding::immediateControlField(), indentation(), language_, LIMM_TAG_SIGNAL, machine_, BinaryEncoding::moveSlot(), MoveSlot::name(), TTAMachine::Component::name(), squashSignal(), ImmediateControlField::templateEncoding(), MachineInfo::templatesUsingSlot(), GuardField::unconditionalGuardEncoding(), ProGe::Verilog, ProGe::VHDL, and writeSquashSignalSubstitution().
Referenced by writeSquashSignalGenerationProcesses().
|
private |
Writes the generation processes of squash signals to the given stream.
stream | The stream. |
Definition at line 1548 of file DefaultDecoderGenerator.cc.
References TTAMachine::Machine::busNavigator(), TTAMachine::Machine::Navigator< ComponentType >::count(), TTAMachine::Machine::Navigator< ComponentType >::item(), machine_, and writeSquashSignalGenerationProcess().
Referenced by writeInstructionDecoder().
|
private |
Writes the squash signals of guards to the given stream.
stream | The stream. |
Definition at line 1169 of file DefaultDecoderGenerator.cc.
References assert, bem_, TTAMachine::Machine::busNavigator(), TTAMachine::Machine::Navigator< ComponentType >::count(), MoveSlot::hasGuardField(), BinaryEncoding::hasMoveSlot(), indentation(), TTAMachine::Machine::Navigator< ComponentType >::item(), language_, machine_, BinaryEncoding::moveSlot(), TTAMachine::Component::name(), squashSignal(), and ProGe::VHDL.
Referenced by writeInstructionDecoder().
|
staticprivate |
Writes substitution of guard value to the squash signal of the given bus.
bus | The bus. |
enc | The guard encoding. |
guard | The guard. |
stream | The stream to write. |
indLevel | The indentation level. |
Definition at line 3935 of file DefaultDecoderGenerator.cc.
References GuardEncoding::encoding(), guardPortName(), indentation(), TTAMachine::Guard::isInverted(), TTAMachine::Component::name(), squashSignal(), and ProGe::VHDL.
Referenced by writeSquashSignalGenerationProcess().
|
private |
The binary encoding map.
Definition at line 321 of file DefaultDecoderGenerator.hh.
Referenced by instructionTemplateCondition(), writeBusControlRulesOfOutputSocket(), writeBusControlRulesOfSImmSocketOfBus(), writeControlRulesOfFUInputPort(), writeControlRulesOfFUOutputPort(), writeControlRulesOfRFReadPort(), writeControlRulesOfRFWritePort(), writeImmediateSlotSignals(), writeInstructionDismembering(), writeInstructionTemplateProcedures(), writeLongImmediateTagSignal(), writeLongImmediateWriteProcess(), writeMoveFieldSignals(), writeSimmDataSignal(), writeSquashSignalGenerationProcess(), and writeSquashSignals().
|
private |
The instruction decoder block in the netlist.
Definition at line 327 of file DefaultDecoderGenerator.hh.
Referenced by addGlockPortToDecoder(), addLockReqPortToDecoder(), completeDecoderBlock(), writeControlRegisterMappings(), and writeInstructionDecoder().
|
private |
Definition at line 330 of file DefaultDecoderGenerator.hh.
Referenced by completeDecoderBlock(), and writeInstructionDecoder().
|
private |
The flag to generate global lock request handling in decoder. False means delegating the lock request towards instruction fetch.
Definition at line 342 of file DefaultDecoderGenerator.hh.
Referenced by setGenerateNoLoopbackGlock(), and writeGlockMapping().
|
private |
Bus enable signals for bustrace.
Definition at line 337 of file DefaultDecoderGenerator.hh.
Referenced by setGenerateBusEnable(), and writeSocketCntrlSignals().
|
private |
Generate debugger signals?
Definition at line 333 of file DefaultDecoderGenerator.hh.
Referenced by completeDecoderBlock(), glockRequestWidth(), setGenerateDebugger(), and writeMainDecodingProcess().
|
private |
Tells whether to generate global lock tracing code.
Definition at line 329 of file DefaultDecoderGenerator.hh.
Referenced by setGenerateLockTrace(), and writeInstructionDecoder().
|
static |
Definition at line 117 of file DefaultDecoderGenerator.hh.
Referenced by addGlockPortToDecoder(), DefaultICDecoderGenerator::addRV32MicroCode(), writeGlockMapping(), and writeInstructionDecoder().
|
private |
The IC generator.
Definition at line 323 of file DefaultDecoderGenerator.hh.
Referenced by addGlockPortToDecoder(), busCntrlSignalPinOfSocket(), completeDecoderBlock(), glockPortWidth(), writeControlRulesOfFUInputPort(), writeControlRulesOfFUOutputPort(), writeControlRulesOfRFReadPort(), and writeControlRulesOfRFWritePort().
|
private |
Definition at line 331 of file DefaultDecoderGenerator.hh.
Referenced by busCntrlSignalPinOfSocket(), generateInstructionDecoder(), SetHDL(), writeBusControlRulesOfOutputSocket(), writeBusControlRulesOfSImmSocketOfBus(), writeComment(), writeControlRegisterMappings(), writeControlRulesOfFUInputPort(), writeControlRulesOfFUOutputPort(), writeControlRulesOfRFReadPort(), writeControlRulesOfRFWritePort(), writeGlockHandlingSignals(), writeGlockMapping(), writeInstructionDecoder(), writeInstructionDismembering(), writeLockDumpCode(), writeLongImmediateWriteProcess(), writeMainDecodingProcess(), writePipelineFillProcess(), writeResettingOfControlRegisters(), writeRFCntrlSignals(), writeRFSRAMDecodingProcess(), writeRulesForSourceControlSignals(), writeSignalDeclaration(), writeSquashSignalGenerationProcess(), and writeSquashSignals().
|
private |
The starting cycle for bus tracing.
Definition at line 339 of file DefaultDecoderGenerator.hh.
Referenced by setLockTraceStartingCycle(), and writeLockDumpCode().
|
private |
The machine.
Definition at line 319 of file DefaultDecoderGenerator.hh.
Referenced by addGlockPortToDecoder(), addLockReqPortToDecoder(), completeDecoderBlock(), findGuard(), glockPortWidth(), glockRequestWidth(), opcode(), opcodeWidth(), verifyCompatibility(), writeControlRegisterMappings(), writeFUCntrlSignals(), writeInstructionTemplateProcedures(), writeLongImmediateWriteProcess(), writeRFCntrlSignals(), writeRFSRAMDecodingProcess(), writeRulesForDestinationControlSignals(), writeRulesForSourceControlSignals(), writeSocketCntrlSignals(), writeSquashSignalGenerationProcess(), writeSquashSignalGenerationProcesses(), and writeSquashSignals().
|
private |
The netlist generator.
Definition at line 325 of file DefaultDecoderGenerator.hh.
Referenced by addGlockPortToDecoder(), addLockReqPortToDecoder(), completeDecoderBlock(), generateInstructionDecoder(), glockPortWidth(), glockRequestWidth(), opcodeWidth(), and sacEnabled().
|
private |
Definition at line 350 of file DefaultDecoderGenerator.hh.
Referenced by writeFUCntrlSignals(), writeResettingOfControlRegisters(), writeRFCntrlSignals(), and writeSocketCntrlSignals().
|
private |
Bookkeeping for reset-needing signals.
Definition at line 349 of file DefaultDecoderGenerator.hh.
Referenced by writeFUCntrlSignals(), writeResettingOfControlRegisters(), writeRFCntrlSignals(), and writeSocketCntrlSignals().
|
static |
Definition at line 116 of file DefaultDecoderGenerator.hh.
Referenced by DefaultICDecoderGenerator::addRV32MicroCode(), and writeControlRegisterMappings().
|
private |
Reset synchronously (otherwise asynchronous)
Definition at line 335 of file DefaultDecoderGenerator.hh.
Referenced by setSyncReset(), writeGlockMapping(), writeLongImmediateWriteProcess(), writeMainDecodingProcess(), and writePipelineFillProcess().
|
private |
Maps connected glock port bits to associated TTA Units.
Definition at line 344 of file DefaultDecoderGenerator.hh.
Referenced by addGlockPortToDecoder(), and writeGlockMapping().
|
private |
Maps TTA Units to associated glock request port bits.
Definition at line 346 of file DefaultDecoderGenerator.hh.
Referenced by addLockReqPortToDecoder(), and writeGlockMapping().