OpenASIP
2.0
|
Public Member Functions | |
DefaultICDecoderGenerator (const TTAMachine::Machine &machine, const BinaryEncoding &bem) | |
virtual | ~DefaultICDecoderGenerator () |
virtual void | completeNetlist (NetlistBlock &netlistBlock, const NetlistGenerator &generator) |
void | addRV32MicroCode (NetlistBlock &netlistBlock, const NetlistGenerator &generator) |
void | generateDebuggerCode (const NetlistGenerator &generator) |
void | addDummyIfetchDebugPorts (const NetlistGenerator &generator) |
virtual void | generate (HDL language, const std::string &dstDirectory, const NetlistGenerator &generator, const IDF::MachineImplementation &implementation, const std::string &entityString) |
virtual std::set< int > | requiredRFLatencies (const TTAMachine::ImmediateUnit &iu) const |
virtual void | verifyCompatibility () const |
Public Member Functions inherited from ProGe::ICDecoderGeneratorPlugin | |
ICDecoderGeneratorPlugin (const TTAMachine::Machine &machine, const BinaryEncoding &bem, const std::string &description) | |
virtual | ~ICDecoderGeneratorPlugin () |
std::string | pluginDescription () const |
int | recognizedParameterCount () const |
std::string | recognizedParameter (int index) const |
std::string | parameterDescription (const std::string ¶mName) const |
void | setParameter (const std::string &name, const std::string &value) |
const TTAMachine::Machine & | machine () const |
const BinaryEncoding & | bem () const |
Private Member Functions | |
virtual void | writeGlobalDefinitions (HDL language, std::ostream &pkgStream) const |
bool | generateDebugger (bool minimal=true) const |
bool | generateBusTrace () const |
bool | hasSynchronousReset () const |
bool | generateLockTrace () const |
bool | bypassInstructionRegister () const |
int | busTraceStartingCycle () const |
int | lockTraceStartingCycle () const |
bool | generateNoSelfLockingFUs () const |
void | addInstructioRegisterBypass (HDL language, const NetlistGenerator &generator) |
int | calculateSupportedDelaySlots () const |
void | readParameters () |
Static Private Member Functions | |
static std::string | vhdlDirection (ProGe::Direction direction) |
static int | dataPortWidth (const TTAMachine::Socket &socket) |
Private Attributes | |
NetlistBlock * | dbsmBlock |
DefaultICGenerator * | icGenerator_ |
DefaultDecoderGenerator * | decoderGenerator_ |
const TTAMachine::Machine & | ttamachine_ |
const BinaryEncoding & | bem_ |
Additional Inherited Members | |
Protected Member Functions inherited from ProGe::ICDecoderGeneratorPlugin | |
void | addParameter (const std::string &name, const std::string &description) |
bool | hasParameterSet (const std::string &name) const |
std::string | parameterValue (const std::string &name) const |
Static Protected Member Functions inherited from ProGe::ICDecoderGeneratorPlugin | |
static TTAMachine::Socket::Direction | convertDirection (HDB::Direction direction) |
Default implementation for IC/decoder generator.
Definition at line 929 of file DefaultICDecoderPlugin.cc.
|
inline |
Definition at line 931 of file DefaultICDecoderPlugin.cc.
References BUS_TRACE_STARTING_CYCLE, BYPASS_FETCHBLOCK_REG_PARAM, ENABLE_FEATURE, GENERATE_BUS_TRACE_PARAM, GENERATE_DEBUGGER_PARAM, GENERATE_DEBUGGER_PARAM_EXTERNAL, GENERATE_DEBUGGER_PARAM_INTERNAL, GENERATE_DEBUGGER_PARAM_MINIMAL, GENERATE_LOCK_TRACE_PARAM, LOCK_TRACE_STARTING_CYCLE, and machine.
|
inlinevirtual |
Definition at line 975 of file DefaultICDecoderPlugin.cc.
|
inline |
Definition at line 1370 of file DefaultICDecoderPlugin.cc.
References ProGe::BIT, ProGe::BIT_VECTOR, ProGe::StaticSignal::GND, ProGe::IN, ProGe::NetlistGenerator::instructionFetch(), ProGe::OUT, ProGe::NetlistPort::setToStatic(), and ProGe::StaticSignal::VCC.
|
inlineprivate |
Enables instruction register bypass feature in the instruction fetch block.
Definition at line 1822 of file DefaultICDecoderPlugin.cc.
References assert, ProGe::NetlistGenerator::instructionFetch(), ProGe::NetlistBlock::setParameter(), ProGe::Verilog, and ProGe::VHDL.
|
inline |
Definition at line 1004 of file DefaultICDecoderPlugin.cc.
References ProGe::NetlistBlock::addSubBlock(), ProGe::BIT, ProGe::BIT_VECTOR, ProGe::NetlistGenerator::clkPort(), ProGe::Netlist::connect(), ProGe::Netlist::disconnectPorts(), FETCHBLOCK_PORT_NAME, DefaultDecoderGenerator::GLOCK_PORT_NAME, IFETCH_STALL_PORT_NAME, ProGe::IN, ProGe::NetlistGenerator::instructionDecoder(), ProGe::NetlistGenerator::instructionDecompressor(), ProGe::NetlistGenerator::instructionFetch(), ProGe::NetlistBlock::netlist(), ProGe::OUT, ProGe::NetlistBlock::port(), DefaultDecoderGenerator::RISCV_SIMM_PORT_IN_NAME, RISCV_SIMM_PORT_OUT_NAME, ProGe::NetlistGenerator::rstPort(), and ProGe::NetlistPort::setWidthFormula().
|
inlineprivate |
Returns the starting cycle to be written to the bus trace given as parameter.
Definition at line 1727 of file DefaultICDecoderPlugin.cc.
References BUS_TRACE_STARTING_CYCLE, and Conversion::toUnsignedInt().
|
inlineprivate |
Tells whether instruction register should be left generated (true).
Definition at line 1708 of file DefaultICDecoderPlugin.cc.
References BYPASS_FETCHBLOCK_REG_PARAM, and BYPASS_FETCHBLOCK_REG_PARAM_YES.
|
inlineprivate |
Return number of required delay slots. By default the number is three but can be reduced or increased by options.
Definition at line 1856 of file DefaultICDecoderPlugin.cc.
|
inlinevirtual |
Completes the given netlist by adding IC block and completing the decoder block by adding the ports connected to IC. Connects also IC to all the units in the machine.
The | netlist to complete. |
generator | The netlist generator which generated the netlist. |
Implements ProGe::ICDecoderGeneratorPlugin.
Definition at line 989 of file DefaultICDecoderPlugin.cc.
|
inlinestaticprivate |
Calculates the data port width of the given socket.
socket | The socket. |
Definition at line 1805 of file DefaultICDecoderPlugin.cc.
References TTAMachine::Socket::port(), TTAMachine::Socket::portCount(), and TTAMachine::Port::width().
|
inlinevirtual |
Generates the interconnection network and instruction decoder to the given destination directory.
dstDirectory | The destination directory. |
generator | The netlist generator that generated the netlist. |
Implements ProGe::ICDecoderGeneratorPlugin.
Definition at line 1401 of file DefaultICDecoderPlugin.cc.
References __func__, abortWithError, ProGe::ProGeContext::adf(), ProGe::NetlistGenerator::context(), TTAMachine::Machine::controlUnit(), Environment::dataDirPath(), FileSystem::DIRECTORY_SEPARATOR, DS, Exception::errorMessage(), GENERATE_DEBUGGER_PARAM, GENERATE_DEBUGGER_PARAM_MINIMAL, ProGe::RV32MicroCodeGenerator::generateRTL(), MachineInfo::getOpset(), ProGe::BlockSourceCopier::getTemplateInstatiator(), IFETCH_STALL_PORT_NAME, implementation, ProGe::BlockSourceCopier::instantiateHDLTemplate(), ProGe::NetlistGenerator::instructionFetch(), HDLTemplateInstantiator::replacePlaceholder(), HDLTemplateInstantiator::replacePlaceholderFromFile(), ProGe::RV32MicroCodeGenerator::setBypassInstructionRegister(), ProGe::NetlistBlock::setParameter(), Conversion::toString(), and ProGe::VHDL.
|
inlineprivate |
Tells whether IC generator should generate bus tracing code.
Definition at line 1667 of file DefaultICDecoderPlugin.cc.
References GENERATE_BUS_TRACE_PARAM, and GENERATE_BUS_TRACE_PARAM_YES.
|
inlineprivate |
Tells whether IC generator should generate debug interface code.
Definition at line 1646 of file DefaultICDecoderPlugin.cc.
References GENERATE_DEBUGGER_PARAM, GENERATE_DEBUGGER_PARAM_EXTERNAL, GENERATE_DEBUGGER_PARAM_INTERNAL, GENERATE_DEBUGGER_PARAM_MINIMAL, and GENERATE_DEBUGGER_PARAM_YES.
|
inline |
Definition at line 1101 of file DefaultICDecoderPlugin.cc.
References ProGe::NetlistBlock::addPackage(), ProGe::NetlistBlock::addSubBlock(), assert, ProGe::BIT, ProGe::BIT_VECTOR, ProGe::NetlistGenerator::clkPort(), ProGe::Netlist::connect(), ProGe::NetlistGenerator::gcuReturnAddressInPort(), GENERATE_DEBUGGER_PARAM, GENERATE_DEBUGGER_PARAM_EXTERNAL, GENERATE_DEBUGGER_PARAM_MINIMAL, ProGe::IN, ProGe::BaseNetlistBlock::instanceName(), ProGe::NetlistGenerator::instructionDecoder(), ProGe::NetlistGenerator::instructionFetch(), ProGe::BaseNetlistBlock::moduleName(), ProGe::NetlistBlock::netlist(), ProGe::OUT, ProGe::NetlistBlock::parentBlock(), ProGe::NetlistBlock::port(), ProGe::NetlistGenerator::rstPort(), ProGe::NetlistBlock::subBlock(), ProGe::NetlistBlock::subBlockCount(), ProGe::NetlistPort::unsetStatic(), and ProGe::NetlistPort::widthFormula().
|
inlineprivate |
Tells whether IC generator should generate global lock tracing code.
Definition at line 1691 of file DefaultICDecoderPlugin.cc.
References GENERATE_LOCK_TRACE_PARAM, and GENERATE_LOCK_TRACE_PARAM_YES.
|
inlineprivate |
Definition at line 1770 of file DefaultICDecoderPlugin.cc.
References NO_SELF_LOCKING_PARAM, and NO_SELF_LOCKING_PARAM_YES.
|
inlineprivate |
Definition at line 1681 of file DefaultICDecoderPlugin.cc.
References ENABLE_FEATURE, and SYNC_RESET.
|
inlineprivate |
Returns the starting cycle to be written to the global lock trace given as parameter.
If parameter is not defined use value from busTraceStartingCycle() instead.
Definition at line 1750 of file DefaultICDecoderPlugin.cc.
References BUS_TRACE_STARTING_CYCLE, LOCK_TRACE_STARTING_CYCLE, and Conversion::toUnsignedInt().
|
inlineprivatevirtual |
Reads parameters and configures the IC and decoder generators.
Implements ProGe::ICDecoderGeneratorPlugin.
Definition at line 1868 of file DefaultICDecoderPlugin.cc.
|
inlinevirtual |
Returns the required latency of the hardware implementation of the given immediate unit.
iu | The immediate unit. |
Implements ProGe::ICDecoderGeneratorPlugin.
Definition at line 1591 of file DefaultICDecoderPlugin.cc.
|
inlinevirtual |
Verifies that the plugin is compatible with the machine.
InvalidData | If the plugin is not compatible with the machine. |
Implements ProGe::ICDecoderGeneratorPlugin.
Definition at line 1602 of file DefaultICDecoderPlugin.cc.
References __func__, and Conversion::toString().
|
inlinestaticprivate |
Converts the given direction to a string.
direction | The direction. |
Definition at line 1786 of file DefaultICDecoderPlugin.cc.
References assert, ProGe::BIDIR, ProGe::IN, and ProGe::OUT.
|
inlineprivatevirtual |
Returns global package definitions in the form of a stream specifically for the variable length instruction architecture.
pkgStream | The destination stream |
Implements ProGe::ICDecoderGeneratorPlugin.
Definition at line 1629 of file DefaultICDecoderPlugin.cc.
References ProGe::Verilog, and ProGe::VHDL.
|
private |
Definition at line 1896 of file DefaultICDecoderPlugin.cc.
|
private |
Definition at line 1891 of file DefaultICDecoderPlugin.cc.
|
private |
Definition at line 1894 of file DefaultICDecoderPlugin.cc.
|
private |
Definition at line 1893 of file DefaultICDecoderPlugin.cc.
|
private |
Definition at line 1895 of file DefaultICDecoderPlugin.cc.