#include <HDBToHtml.hh>
|
| HDBToHtml (const HDB::HDBManager &hdb) |
|
virtual | ~HDBToHtml () |
|
void | fuEntryToHtml (RowID id, std::ostream &stream) |
|
void | rfEntryToHtml (RowID id, std::ostream &stream) |
|
void | busEntryToHtml (RowID id, std::ostream &stream) |
|
void | socketEntryToHtml (RowID id, std::ostream &stream) |
|
void | fuArchToHtml (RowID id, std::ostream &stream) |
|
void | rfArchToHtml (RowID id, std::ostream &stream) |
|
void | fuImplToHtml (RowID id, std::ostream &stream) |
|
void | rfImplToHtml (RowID id, std::ostream &stream) |
|
void | costFunctionPluginToHtml (RowID id, std::ostream &stream) |
|
void | OperationImplementationToHtml (RowID id, std::ostream &stream) |
|
void | OperationImplementationResourceToHtml (RowID id, std::ostream &stream) |
|
Collection of functions for generating html pages displaying information of HDB elements.
Definition at line 47 of file HDBToHtml.hh.
◆ HDBToHtml()
The Cosntructor.
- Parameters
-
Definition at line 86 of file HDBToHtml.cc.
◆ ~HDBToHtml()
HDBToHtml::~HDBToHtml |
( |
| ) |
|
|
virtual |
◆ busEntryToHtml()
void HDBToHtml::busEntryToHtml |
( |
RowID |
id, |
|
|
std::ostream & |
stream |
|
) |
| |
◆ costFunctionPluginToHtml()
void HDBToHtml::costFunctionPluginToHtml |
( |
RowID |
id, |
|
|
std::ostream & |
stream |
|
) |
| |
Generates html page of a cost function plugin information.
- Parameters
-
id | Row id of the cost estimation plugin. |
strem | Stream where the html is written to. |
Definition at line 900 of file HDBToHtml.cc.
904 stream <<
"<html><body><small>" << endl;
905 stream <<
"<table bgcolor=#bbbbbb>"<< endl;
908 stream <<
"<tr><td align=right>Name:</td><td>" << plugin->
name()
909 <<
"</td></tr>" << endl;
912 stream <<
"<tr><td align=right>Type:</td><td>";
913 if (plugin->
type() == CostFunctionPlugin::COST_FU) {
914 stream <<
"Function unit cost estimator.";
915 }
else if (plugin->
type() == CostFunctionPlugin::COST_RF) {
916 stream <<
"Register file cost estimator.";
917 }
else if (plugin->
type() == CostFunctionPlugin::COST_DECOMP) {
918 stream <<
"Decompressor cost estimator.";
919 }
else if (plugin->
type() == CostFunctionPlugin::COST_ICDEC) {
920 stream <<
"Interconnection network & decoder cost estimator.";
924 stream <<
"</td></tr>" << endl;
927 stream <<
"<tr><td align=right>File path:</td><td>"
931 stream <<
"<tr><td align=right>Description:</td><td>"
934 stream <<
"</table><br><br>"<< endl;
938 stream <<
"<b>Cost estimation data:</b>" << endl;
939 stream <<
"<table bgcolor=#bbbbbb>"<< endl;
940 stream <<
"<tr><th>Entry type</th><th>Entry ID</th>"
941 <<
"<th>Key</th><th>Value</th></tr>" << endl;
944 std::set<RowID>::const_iterator iter = dataIDs.begin();
945 for (; iter != dataIDs.end(); iter++) {
950 stream <<
"<td>FU</td><td><a href=\"/" <<
FU_ENTRIES <<
"/"
956 stream <<
"<td>RF</td><td><a href=\"/" <<
RF_ENTRIES <<
"/"
962 stream <<
"<td>Bus</td><td>"
967 stream <<
"<td>Socket</td><td>"
971 stream <<
"<td>-</td><td>-</td>";
974 stream <<
"<td>" << data.
name() <<
"</td><td>"
978 stream <<
"</table>"<< endl;
979 stream <<
"</small></body></html>" << endl;
References CostEstimationData::busReference(), HDB::HDBManager::costEstimationData(), HDB::HDBManager::costFunctionPluginByID(), HDB::HDBManager::costFunctionPluginDataIDs(), HDB::CostFunctionPlugin::description(), FU_ENTRIES, CostEstimationData::fuReference(), CostEstimationData::hasBusReference(), CostEstimationData::hasFUReference(), CostEstimationData::hasRFReference(), CostEstimationData::hasSocketReference(), hdb_, CostEstimationData::name(), HDB::CostFunctionPlugin::name(), HDB::CostFunctionPlugin::pluginFilePath(), RF_ENTRIES, CostEstimationData::rfReference(), CostEstimationData::socketReference(), DataObject::stringValue(), HDB::CostFunctionPlugin::type(), and CostEstimationData::value().
Referenced by HDBBrowserInfoPanel::displayCostFunctionPlugin().
◆ fuArchToHtml()
void HDBToHtml::fuArchToHtml |
( |
RowID |
id, |
|
|
std::ostream & |
stream |
|
) |
| |
Generates a html page of a function unit architecture.
- Parameters
-
id | ID of the FU architecture. |
stream | Stream where the html is written to. |
Definition at line 328 of file HDBToHtml.cc.
333 stream <<
"<html><body><small>" << endl;
338 stream <<
"<b>Ports:</b><br>" << endl;
339 stream <<
"<table bgcolor=#bbbbbb>" << endl;
340 stream <<
"<tr><th>Name</th><th>Width</th>"
341 <<
"<th>Triggering</th>"
343 <<
"<th>Guard</th></tr>"
346 for (
int i = 0; i < fu.
portCount(); i++) {
350 stream <<
"<tr><td align=left>" << port.
name() <<
"</td>";
353 stream <<
"<td align=right>param</td>";
355 stream <<
"<td align=right>" << port.
width() <<
"</td>";
359 stream <<
"<td align=center><font color=#009900>yes</font></td>";
361 stream <<
"<td align=center><font color=#ff0000>no</font></td>";
365 stream <<
"<td align=center><font color=#009900>yes</font></td>";
367 stream <<
"<td align=center><font color=#ff0000>no</font></td>";
371 stream <<
"<td align=center><font color=#009900>yes</font></td>";
373 stream <<
"<td align=center><font color=#ff0000>no</font></td>";
375 stream <<
"</tr>" << endl;
377 stream <<
"</table><br><br>" << endl;
382 stream <<
"<b>Operations:</b><br><br>" << endl;
388 stream <<
"<b>" << operation.
name() <<
"</b><br>" << endl;
389 stream <<
"Latency: " << operation.
latency() << endl;
390 stream <<
"<br>" << endl;
391 stream <<
"<table><tr><td valing=top>" << endl;
392 stream <<
"<table bgcolor=#bbbbbb><tr><th>operand</th><th>port</th>";
393 for (
int cycle = 0; cycle < operation.
latency(); cycle++) {
394 stream <<
"<th width=20>" << cycle <<
"</th>";
396 stream <<
"</tr>" << endl;
400 ExecutionPipeline::OperandSet::iterator iter = read.begin();
401 for (; iter != read.end(); iter++) {
402 stream <<
"<tr><td>" << *iter <<
"</td><td>"
403 << operation.
port(*iter)->
name() <<
"</td>";
404 for (
int cycle = 0; cycle < operation.
latency(); cycle++) {
407 stream <<
"<td align=center><b>R</b></td>";
409 stream <<
"<td></td>";
412 stream <<
"</tr>" << endl;
417 iter = written.begin();
418 for (; iter != written.end(); iter++) {
419 stream <<
"<tr><td>" << *iter <<
"</td><td>"
420 << operation.
port(*iter)->
name() <<
"</td>";
421 for (
int cycle = 0; cycle < operation.
latency(); cycle++) {
424 stream <<
"<td align=center><b>W</b></td>";
426 stream <<
"<td></td>";
429 stream <<
"</tr>" << endl;
431 stream <<
"</table></td>" << endl;
433 stream <<
"<td valign=top><table bgcolor=#bbbbbb>"
434 <<
"<tr><th>resource</th>";
435 for (
int cycle = 0; cycle < operation.
latency(); cycle++) {
436 stream <<
"<th width=20>" << cycle <<
"</th>";
438 stream <<
"</tr>" << endl;
443 stream <<
"<tr><td>" << res.
name() <<
"</td>";
444 for (
int cycle = 0; cycle < operation.
latency(); cycle++) {
446 stream <<
"<td align=center><b>X</b></td>";
448 stream <<
"<td></td>";
451 stream <<
"</tr>" << endl;
454 stream <<
"</table></td></tr></table><br><br>" << endl;
456 stream <<
"</small></body></html>" << endl;
References HDB::FUArchitecture::architecture(), ContainerTools::containsValue(), HDB::HDBManager::fuArchitectureByID(), HDB::FUArchitecture::hasGuardSupport(), HDB::FUArchitecture::hasParameterizedWidth(), hdb_, TTAMachine::BaseFUPort::isOpcodeSetting(), TTAMachine::ExecutionPipeline::isResourceUsed(), TTAMachine::BaseFUPort::isTriggering(), TTAMachine::HWOperation::latency(), TTAMachine::PipelineElement::name(), TTAMachine::HWOperation::name(), TTAMachine::Port::name(), TTAMachine::FunctionUnit::operation(), TTAMachine::FunctionUnit::operationCount(), TTAMachine::HWOperation::pipeline(), TTAMachine::FunctionUnit::pipelineElement(), TTAMachine::FunctionUnit::pipelineElementCount(), TTAMachine::FunctionUnit::port(), TTAMachine::HWOperation::port(), TTAMachine::Unit::portCount(), TTAMachine::ExecutionPipeline::readOperands(), TTAMachine::BaseFUPort::width(), and TTAMachine::ExecutionPipeline::writtenOperands().
Referenced by HDBBrowserInfoPanel::displayFUArchitecture().
◆ fuEntryToHtml()
void HDBToHtml::fuEntryToHtml |
( |
RowID |
id, |
|
|
std::ostream & |
stream |
|
) |
| |
Generates a html page of a function unit entry->
- Parameters
-
id | ID of the FU entry in the HDB. |
stream | Stream where the html is written to. |
Definition at line 103 of file HDBToHtml.cc.
107 stream <<
"<html><body><small>" << endl;
108 stream <<
"<b>Function unit entry " << entry->
id() <<
"</b><br>" << endl;
110 stream <<
"<table>" << endl;
111 stream <<
"<tr><td align=right><b>Architecture:</b></td><td>";
116 <<
"</td></tr>" << endl;
118 stream <<
"-</td></tr>";
121 stream <<
"<tr><td align=right><b>Implementation:</b></td><td>";
126 <<
"</a></td></tr>" << endl;
128 stream <<
"-</td></tr>" << endl;
131 stream <<
"<tr><td align=right><b>Cost function plugin:</b></td><td>";
135 << plugin.
id() <<
"\">"
137 <<
"</a></td></tr>" << endl;
139 stream <<
"-</td></tr>" << endl;
142 stream <<
"</table>";
146 if (!costDataIDs.empty()) {
147 stream <<
"<b>Cost estimation data:</b>" << endl;
148 stream <<
"<table bgcolor=#bbbbbb>" << endl;
149 stream <<
"<tr><th>Name</th><th>Value</th>"
150 <<
"<th>Plugin</th></tr>" << endl;
152 stream <<
"No cost estimation data.<br>" << endl;
154 std::set<RowID>::const_iterator iter = costDataIDs.begin();
155 for (; iter != costDataIDs.end(); iter++) {
157 stream <<
"<tr><td>" << data.
name() <<
"</td>"
158 <<
"<td align=right>";
160 stream <<
"</td><td align=center><a href=\"/" <<
COST_PLUGINS
162 << data.
pluginID() <<
"</a></td></tr>" << endl;
164 stream <<
"</table>" << endl;
165 stream <<
"</small></body></html>" << endl;
References HDB::FUEntry::architecture(), COST_PLUGINS, HDB::HDBManager::costEstimationData(), HDB::HDBEntry::costFunction(), FU_ARCHITECTURES, FU_IMPLEMENTATIONS, HDB::HDBManager::fuByEntryID(), HDB::HDBManager::fuCostEstimationDataIDs(), HDB::FUEntry::hasArchitecture(), HDB::HDBEntry::hasCostFunction(), HDB::FUEntry::hasImplementation(), hdb_, HWBlockArchitecture::id(), HDB::HDBEntry::id(), HDB::CostFunctionPlugin::id(), HDB::HWBlockImplementation::id(), HDB::FUEntry::implementation(), HDB::HWBlockImplementation::moduleName(), CostEstimationData::name(), HDB::CostFunctionPlugin::name(), CostEstimationData::pluginID(), DataObject::stringValue(), and CostEstimationData::value().
Referenced by HDBBrowserInfoPanel::displayFUEntry().
◆ fuImplToHtml()
void HDBToHtml::fuImplToHtml |
( |
RowID |
id, |
|
|
std::ostream & |
stream |
|
) |
| |
Generates a html page of a function unit implementation.
- Parameters
-
id | ID of the fu implementation. |
stream | Stream where the html is written to. |
Definition at line 539 of file HDBToHtml.cc.
545 stream <<
"<html><body>" << endl;
546 stream <<
"<small><table>" << endl;
548 stream <<
"<tr><td align=right><b>Module name:</b></td><td align=left>"
551 stream <<
"<tr><td align=right><b>Opcode port:</b></td><td align=left>"
554 stream <<
"<tr><td align=right><b>Clock port:</b></td><td align=left>"
555 << impl.
clkPort() <<
"</td></tr>" << endl;
557 stream <<
"<tr><td align=right><b>Reset port:</b></td><td align=left>"
558 << impl.
rstPort() <<
"</td></tr>" << endl;
560 stream <<
"<tr><td align=right><b>Global lock port:</b></td>"
562 << impl.
glockPort() <<
"</td></tr>" << endl;
564 stream <<
"<tr><td align=right><b>Global lock req. port:</b></td>"
568 stream <<
"</table><br><br>" << endl;
572 stream <<
"<b>Architecture ports:</b>" << endl;
573 stream <<
"<table bgcolor=#bbbbbb>" << endl;
574 stream <<
"<tr><th>Name</th>"
575 <<
"<th>Architecture port</th>"
576 <<
"<th>Load port</th>"
577 <<
"<th>Guard port</th>"
578 <<
"<th>Width formula</th></tr>" << endl;
580 stream <<
"No architecture ports.<br>" << endl;
585 stream <<
"<tr><td>" << port.
name() <<
"</td>"
587 <<
"<td>" << port.
loadPort() <<
"</td>"
589 <<
"</td><td>" << port.
widthFormula() <<
"</td></td>" << endl;
591 stream <<
"</table><br><br>" << endl;
596 stream <<
"<b>Opcodes:</b>" << endl;
597 stream <<
"<table bgcolor=#bbbbbb>" << endl;
598 stream <<
"<tr><th>Operation</th><th>Opcode</th></tr>" << endl;
600 stream <<
"No opcodes.<br>" << endl;
605 <<
"</td></tr>" << endl;
607 stream <<
"</table><br><br>" << endl;
611 stream <<
"<b>External ports:</b>" << endl;
612 stream <<
"<table bgcolor=#bbbbbb>" << endl;
613 stream <<
"<tr><th>Name</th><th>Direction</th><th>Width formula</th>"
614 <<
"<th>Parameter dependencies</th>"
615 <<
"<th>Description</th></tr>" << endl;
617 stream <<
"No external ports.<br>" << endl;
622 stream <<
"<tr><td>" << port.
name() <<
"</td><td align=center>";
630 stream <<
"</td><td>" << port.
widthFormula() <<
"</td>";
638 stream <<
"</td><td>" << port.
description() <<
"</td></tr>" << endl;
640 stream <<
"</table><br><br>" << endl;
646 stream <<
"<b>Parameters:</b>" << endl;
647 stream <<
"<table bgcolor=#bbbbbb>" << endl;
648 stream <<
"<tr><th>Name</th><th>Type</th><th>Value</th></tr>" << endl;
650 stream <<
"No parameters.<br>" << endl;
655 stream <<
"<tr><td>" << parameter.
name <<
"</td>"
656 <<
"<td align=center>" << parameter.
type <<
"</td>"
657 <<
"<td>" << parameter.
value <<
"</td></tr>" << endl;
659 stream <<
"</table><br><br>" << endl;
664 stream <<
"<b>Implementation files:</b>" << endl;
665 stream <<
"<table bgcolor=#bbbbbb>" << endl;
666 stream <<
"<tr><th>Path</th><th>Format</th></tr>" << endl;
668 stream <<
"No implementation files.<br>" << endl;
672 stream <<
"<tr><td>" << file.
pathToFile() <<
"</td>"
673 <<
"<td align=center>";
681 stream <<
"</td></tr>" << endl;
683 stream <<
"</table><br><br>" << endl;
688 if (!costDataIDs.empty()) {
689 stream <<
"<b>Cost estimation data:</b>" << endl;
690 stream <<
"<table bgcolor=#bbbbbb>" << endl;
691 stream <<
"<tr><th>Name</th><th>Value</th>"
692 <<
"<th>Plugin</th></tr>" << endl;
694 stream <<
"No cost estimation data.<br>" << endl;
696 std::set<RowID>::const_iterator iter = costDataIDs.begin();
697 for (; iter != costDataIDs.end(); iter++) {
699 stream <<
"<tr><td>" << data.
name() <<
"</td>"
700 <<
"<td align=right>";
702 stream <<
"</td><td align=center><a href=\"/" <<
COST_PLUGINS
704 << data.
pluginID() <<
"</a></td></tr>" << endl;
706 stream <<
"</table>" << endl;
707 stream <<
"</small></body></html>" << endl;
References HDB::FUPortImplementation::architecturePort(), HDB::FUImplementation::architecturePort(), HDB::FUImplementation::architecturePortCount(), HDB::BIDIR, HDB::HWBlockImplementation::clkPort(), COST_PLUGINS, HDB::HDBManager::costEstimationData(), HDB::ExternalPort::description(), HDB::ExternalPort::direction(), HDB::FUImplementation::externalPort(), HDB::FUImplementation::externalPortCount(), HDB::HWBlockImplementation::file(), HDB::BlockImplementationFile::format(), HDB::HDBManager::fuByEntryID(), HDB::HDBManager::fuCostEstimationDataIDs(), HDB::HDBManager::fuEntryIDOfImplementation(), HDB::HWBlockImplementation::glockPort(), HDB::FUImplementation::glockReqPort(), HDB::FUPortImplementation::guardPort(), hdb_, HDB::FUEntry::implementation(), HDB::HWBlockImplementation::implementationFileCount(), HDB::IN, HDB::PortImplementation::loadPort(), HDB::HWBlockImplementation::moduleName(), HDB::Parameter::name, CostEstimationData::name(), HDB::PortImplementation::name(), HDB::ExternalPort::name(), HDB::FUImplementation::opcode(), HDB::FUImplementation::opcodeCount(), HDB::FUImplementation::opcodeOperation(), HDB::FUImplementation::opcodePort(), HDB::OUT, HDB::FUImplementation::parameter(), HDB::FUImplementation::parameterCount(), HDB::ExternalPort::parameterDependency(), HDB::ExternalPort::parameterDependencyCount(), HDB::BlockImplementationFile::pathToFile(), CostEstimationData::pluginID(), HDB::HWBlockImplementation::rstPort(), DataObject::stringValue(), HDB::Parameter::type, HDB::Parameter::value, CostEstimationData::value(), HDB::BlockImplementationFile::Verilog, HDB::BlockImplementationFile::VHDL, HDB::FUPortImplementation::widthFormula(), and HDB::ExternalPort::widthFormula().
Referenced by HDBBrowserInfoPanel::displayFUImplementation().
◆ OperationImplementationResourceToHtml()
void HDBToHtml::OperationImplementationResourceToHtml |
( |
RowID |
id, |
|
|
std::ostream & |
stream |
|
) |
| |
◆ OperationImplementationToHtml()
void HDBToHtml::OperationImplementationToHtml |
( |
RowID |
id, |
|
|
std::ostream & |
stream |
|
) |
| |
◆ rfArchToHtml()
void HDBToHtml::rfArchToHtml |
( |
RowID |
id, |
|
|
std::ostream & |
stream |
|
) |
| |
Generates a html page of a register file architecture.
- Parameters
-
id | ID of the register file architecture. |
stream | Stream where the html is written to. |
Definition at line 469 of file HDBToHtml.cc.
473 stream <<
"<html><body><small>" << endl;
474 stream <<
"<table>" << endl;
477 stream <<
"<tr><td align=right><b>Width:</b></td>";
479 stream <<
"<td>param</td>";
481 stream <<
"<td align=center>" << arch->
width() <<
"</td>";
483 stream <<
"</tr>" << endl;
486 stream <<
"<tr><td align=right><b>Size:</b></td>";
488 stream <<
"<td align=center>param</td>";
490 stream <<
"<td align=center>" << arch->
size() <<
"</td>";
492 stream <<
"</tr>" << endl;
494 stream <<
"<tr><td align=right><b>Read ports:</b></td><td align=center>"
497 stream <<
"<tr><td align=right><b>Write ports:</b></td><td align=center>"
500 stream <<
"<tr><td align=right><b>Bidirectional ports:</b></td>"
504 stream <<
"<tr><td align=right><b>Max reads:</b></td><td align=center>"
505 << arch->
maxReads() <<
"</td></tr>" << endl;
507 stream <<
"<tr><td align=right><b>Max Writes:</b></td><td align=center>"
508 << arch->
maxWrites() <<
"</td></tr>" << endl;
510 stream <<
"<tr><td align=right><b>Latency:</b></td><td align=center>"
511 << arch->
latency() <<
"</td></tr>" << endl;
513 stream <<
"<tr><td align=right><b>Guard support:</b></td>";
515 stream <<
"<td align=center>yes</td></tr>";
516 stream <<
"<tr><td align=right><b>Guard Latency:</b></td>"
518 <<
"</td></tr>" << endl;
520 stream <<
"<td align=center>no</td></tr>";
522 stream <<
"<tr><td align=right><b>Zero Register:</b></td><td" <<
523 " align=center>" << arch->
zeroRegister() <<
"</td></tr>" << endl;
525 stream <<
"</table></small><br>" << endl;
526 stream <<
"</body></html>" << endl;
References HDB::RFArchitecture::bidirPortCount(), HDB::RFArchitecture::guardLatency(), HDB::RFArchitecture::hasGuardSupport(), HDB::RFArchitecture::hasParameterizedSize(), HDB::RFArchitecture::hasParameterizedWidth(), hdb_, HDB::RFArchitecture::latency(), HDB::RFArchitecture::maxReads(), HDB::RFArchitecture::maxWrites(), HDB::RFArchitecture::readPortCount(), HDB::HDBManager::rfArchitectureByID(), HDB::RFArchitecture::size(), HDB::RFArchitecture::width(), HDB::RFArchitecture::writePortCount(), and HDB::RFArchitecture::zeroRegister().
Referenced by HDBBrowserInfoPanel::displayRFArchitecture().
◆ rfEntryToHtml()
void HDBToHtml::rfEntryToHtml |
( |
RowID |
id, |
|
|
std::ostream & |
stream |
|
) |
| |
Generates a html page of a register file entry.
- Parameters
-
id | ID of the register file entry. |
stream | Stream where the html is written to. |
Definition at line 177 of file HDBToHtml.cc.
181 stream <<
"<html><body><small>" << endl;
182 stream <<
"<b>Register file entry " << entry->
id() <<
"</b><br>" << endl;
184 stream <<
"<table>" << endl;
185 stream <<
"<tr><td>Architecture:</td><td>";
190 <<
"</td></tr>" << endl;
192 stream <<
"-</td></tr>";
195 stream <<
"<tr><td><b>Implementation:</b></td><td>";
200 <<
"</td></tr>" << endl;
202 stream <<
"-</td></tr>" << endl;
205 stream <<
"<tr><td align=right><b>Cost function plugin:</b></td><td>";
209 << plugin.
id() <<
"\">"
211 <<
"</a></td></tr>" << endl;
213 stream <<
"-</td></tr>" << endl;
215 stream <<
"</table>";
219 if (!costDataIDs.empty()) {
220 stream <<
"<b>Cost estimation data:</b>" << endl;
221 stream <<
"<table bgcolor=#bbbbbb>" << endl;
222 stream <<
"<tr><th>Name</th><th>Value</th>"
223 <<
"<th>Plugin</th></tr>" << endl;
225 stream <<
"No cost estimation data.<br>" << endl;
227 std::set<RowID>::const_iterator iter = costDataIDs.begin();
228 for (; iter != costDataIDs.end(); iter++) {
230 stream <<
"<tr><td>" << data.
name() <<
"</td>"
231 <<
"<td align=right>";
233 stream <<
"</td><td align=center><a href=\"/" <<
COST_PLUGINS
235 << data.
pluginID() <<
"</a></td></tr>" << endl;
237 stream <<
"</table>" << endl;
238 stream <<
"</small></body></html>" << endl;
References HDB::RFEntry::architecture(), COST_PLUGINS, HDB::HDBManager::costEstimationData(), HDB::HDBEntry::costFunction(), HDB::RFEntry::hasArchitecture(), HDB::HDBEntry::hasCostFunction(), HDB::RFEntry::hasImplementation(), hdb_, HWBlockArchitecture::id(), HDB::HDBEntry::id(), HDB::CostFunctionPlugin::id(), HDB::HWBlockImplementation::id(), HDB::RFEntry::implementation(), HDB::HWBlockImplementation::moduleName(), CostEstimationData::name(), HDB::CostFunctionPlugin::name(), CostEstimationData::pluginID(), RF_ARCHITECTURES, RF_IMPLEMENTATIONS, HDB::HDBManager::rfByEntryID(), HDB::HDBManager::rfCostEstimationDataIDs(), DataObject::stringValue(), and CostEstimationData::value().
Referenced by HDBBrowserInfoPanel::displayRFEntry().
◆ rfImplToHtml()
void HDBToHtml::rfImplToHtml |
( |
RowID |
id, |
|
|
std::ostream & |
stream |
|
) |
| |
Generates a html page of a register file implementation.
- Parameters
-
id | ID of the RF implementation. |
stream | Stream where the html is written to. |
Definition at line 720 of file HDBToHtml.cc.
726 stream <<
"<html><body>" << endl;
727 stream <<
"<small><table>" << endl;
729 stream <<
"<tr><td align=right><b>Module name:</b></td><td align=center>"
732 stream <<
"<tr><td align=right><b>Clock port:</b></td><td align=center>"
733 << impl.
clkPort() <<
"</td></tr>" << endl;
735 stream <<
"<tr><td align=right><b>Reset port:</b></td><td align=center>"
736 << impl.
rstPort() <<
"</td></tr>" << endl;
738 stream <<
"<tr><td align=right><b>Global lock port:</b></td>"
739 <<
"<td align=center>"
740 << impl.
glockPort() <<
"</td></tr>" << endl;
742 stream <<
"<tr><td align=right><b>Guard port:</b></td>"
743 <<
"<td align=center>"
744 << impl.
guardPort() <<
"</td></tr>" << endl;
746 stream <<
"<tr><td align=right><b>Size parameter:</b></td>"
747 <<
"<td align=center>" << impl.
sizeParameter() <<
"</td></tr>"
750 stream <<
"<tr><td align=right><b>Width parameter:</b></td>"
756 stream <<
"<tr><td align=right><b>Separate address cycle:</b></td>"
757 <<
"<td align=center>"
758 << sac_flag <<
"</td></tr>" << endl;
760 stream <<
"</table><br><br>" << endl;
765 stream <<
"<b>Ports:</b>" << endl;
766 stream <<
"<table bgcolor=#bbbbbb>" << endl;
767 stream <<
"<tr><th>Name</th>"
768 <<
"<th>Direction</th>"
769 <<
"<th>Load port</th>"
770 <<
"<th>Opcode port</th>"
771 <<
"<th>Opcode port width formula</th></tr>" << endl;
773 stream <<
"No ports.<br>" << endl;
775 for (
int i = 0; i < impl.
portCount(); i++) {
778 stream <<
"<tr><td>" << port.
name() <<
"</td><td align=center>";
786 stream <<
"</td><td>" << port.
loadPort() <<
"</td>"
789 <<
"</td></td>" << endl;
791 stream <<
"</table><br><br>" << endl;
795 stream <<
"<b>External ports:</b>" << endl;
796 stream <<
"<table bgcolor=#bbbbbb>" << endl;
797 stream <<
"<tr><th>Name</th><th>Direction</th><th>Width formula</th>"
798 <<
"<th>Parameter dependencies</th>"
799 <<
"<th>Description</th></tr>" << endl;
801 stream <<
"No external ports.<br>" << endl;
806 stream <<
"<tr><td>" << port.
name() <<
"</td><td align=center>";
814 stream <<
"</td><td>" << port.
widthFormula() <<
"</td>";
822 stream <<
"</td><td>" << port.
description() <<
"</td></tr>" << endl;
824 stream <<
"</table><br><br>" << endl;
828 stream <<
"<b>Parameters:</b>" << endl;
829 stream <<
"<table bgcolor=#bbbbbb>" << endl;
830 stream <<
"<tr><th>Name</th><th>Type</th><th>Value</th></tr>" << endl;
832 stream <<
"No parameters.<br>" << endl;
837 stream <<
"<tr><td>" << parameter.
name <<
"</td>"
838 <<
"<td align=center>" << parameter.
type <<
"</td>"
839 <<
"<td>" << parameter.
value <<
"</td></tr>" << endl;
841 stream <<
"</table><br><br>" << endl;
845 stream <<
"<b>Implementation files:</b>" << endl;
846 stream <<
"<table bgcolor=#bbbbbb>" << endl;
847 stream <<
"<tr><th>Path</th><th>Format</th></tr>" << endl;
849 stream <<
"No implementation files.<br>" << endl;
854 stream <<
"<tr><td>" << file.
pathToFile() <<
"</td>"
855 <<
"<td align=center>";
863 stream <<
"</td></tr>" << endl;
865 stream <<
"</table><br><br>" << endl;
869 if (!costDataIDs.empty()) {
870 stream <<
"<b>Cost estimation data:</b>" << endl;
871 stream <<
"<table bgcolor=#bbbbbb>" << endl;
872 stream <<
"<tr><th>Name</th><th>Value</th>"
873 <<
"<th>Plugin</th></tr>" << endl;
875 stream <<
"No cost estimation data.<br>" << endl;
877 std::set<RowID>::const_iterator iter = costDataIDs.begin();
878 for (; iter != costDataIDs.end(); iter++) {
880 stream <<
"<tr><td>" << data.
name() <<
"</td>"
881 <<
"<td align=right>";
883 stream <<
"</td><td align=center><a href=\"/" <<
COST_PLUGINS
885 << data.
pluginID() <<
"</a></td></tr>" << endl;
887 stream <<
"</table>" << endl;
888 stream <<
"</small></body></html>" << endl;
References HDB::BIDIR, HDB::HWBlockImplementation::clkPort(), COST_PLUGINS, HDB::HDBManager::costEstimationData(), HDB::ExternalPort::description(), HDB::RFPortImplementation::direction(), HDB::ExternalPort::direction(), HDB::RFImplementation::externalPort(), HDB::RFImplementation::externalPortCount(), HDB::HWBlockImplementation::file(), HDB::BlockImplementationFile::format(), HDB::HWBlockImplementation::glockPort(), HDB::RFImplementation::guardPort(), hdb_, HDB::RFEntry::implementation(), HDB::HWBlockImplementation::implementationFileCount(), HDB::IN, HDB::PortImplementation::loadPort(), HDB::HWBlockImplementation::moduleName(), HDB::Parameter::name, CostEstimationData::name(), HDB::PortImplementation::name(), HDB::ExternalPort::name(), HDB::RFPortImplementation::opcodePort(), HDB::RFPortImplementation::opcodePortWidthFormula(), HDB::OUT, HDB::RFImplementation::parameter(), HDB::RFImplementation::parameterCount(), HDB::ExternalPort::parameterDependency(), HDB::ExternalPort::parameterDependencyCount(), HDB::BlockImplementationFile::pathToFile(), CostEstimationData::pluginID(), HDB::RFImplementation::port(), HDB::RFImplementation::portCount(), HDB::HDBManager::rfByEntryID(), HDB::HDBManager::rfCostEstimationDataIDs(), HDB::HDBManager::rfEntryIDOfImplementation(), HDB::HWBlockImplementation::rstPort(), HDB::RFImplementation::separateAddressCycleParameter(), HDB::RFImplementation::sizeParameter(), DataObject::stringValue(), HDB::Parameter::type, HDB::Parameter::value, CostEstimationData::value(), HDB::BlockImplementationFile::Verilog, HDB::BlockImplementationFile::VHDL, HDB::ExternalPort::widthFormula(), and HDB::RFImplementation::widthParameter().
Referenced by HDBBrowserInfoPanel::displayRFImplementation().
◆ socketEntryToHtml()
void HDBToHtml::socketEntryToHtml |
( |
RowID |
id, |
|
|
std::ostream & |
stream |
|
) |
| |
◆ BUS_ENTRIES
const std::string HDBToHtml::BUS_ENTRIES = "Bus Entries" |
|
static |
◆ COST_PLUGINS
const std::string HDBToHtml::COST_PLUGINS = "Cost Function Plugins" |
|
static |
◆ FU_ARCHITECTURES
const std::string HDBToHtml::FU_ARCHITECTURES = "Function Units" |
|
static |
◆ FU_ENTRIES
const std::string HDBToHtml::FU_ENTRIES = "FU Entries" |
|
static |
◆ FU_IMPLEMENTATIONS
const std::string HDBToHtml::FU_IMPLEMENTATIONS = "FU Implementations" |
|
static |
◆ hdb_
HDB to create html from.
Definition at line 80 of file HDBToHtml.hh.
Referenced by busEntryToHtml(), costFunctionPluginToHtml(), fuArchToHtml(), fuEntryToHtml(), fuImplToHtml(), OperationImplementationResourceToHtml(), OperationImplementationToHtml(), rfArchToHtml(), rfEntryToHtml(), rfImplToHtml(), and socketEntryToHtml().
◆ HDB_ROOT
const std::string HDBToHtml::HDB_ROOT |
|
static |
◆ OPERATION_IMPLEMENTATION_RESOURCES
const std::string HDBToHtml::OPERATION_IMPLEMENTATION_RESOURCES |
|
static |
◆ OPERATION_IMPLEMENTATIONS
const std::string HDBToHtml::OPERATION_IMPLEMENTATIONS |
|
static |
◆ RF_ARCHITECTURES
const std::string HDBToHtml::RF_ARCHITECTURES = "Register Files" |
|
static |
◆ RF_ENTRIES
const std::string HDBToHtml::RF_ENTRIES = "RF Entries" |
|
static |
◆ RF_IMPLEMENTATIONS
const std::string HDBToHtml::RF_IMPLEMENTATIONS = "RF Implementations" |
|
static |
◆ RF_IU_ENTRIES
const std::string HDBToHtml::RF_IU_ENTRIES = "RF/IU Entries" |
|
static |
◆ SOCKET_ENTRIES
const std::string HDBToHtml::SOCKET_ENTRIES = "Socket Entries" |
|
static |
The documentation for this class was generated from the following files:
RowID rfReference() const
std::string clkPort() const
static const std::string RF_IMPLEMENTATIONS
BlockImplementationFile & file(int index) const
CostFunctionPlugin & costFunction() const
std::string opcodePortWidthFormula() const
virtual FUArchitecture * fuArchitectureByID(RowID id) const
virtual bool hasImplementation() const
bool hasParameterizedWidth(const std::string &port) const
std::string description() const
virtual std::string stringValue() const
bool hasSocketReference() const
bool zeroRegister() const
std::set< RowID > costFunctionPluginDataIDs(RowID pluginID) const
int implementationFileCount() const
TTAMachine::FunctionUnit & architecture() const
Direction direction() const
int RowID
Type definition of row ID in relational databases.
FUExternalPort & externalPort(int index) const
static const std::string FU_IMPLEMENTATIONS
bool hasFUReference() const
virtual BaseFUPort * port(const std::string &name) const
OperationImplementationResource OperationImplementationResourceByID(RowID id) const
int parameterCount() const
OperandSet writtenOperands(int cycle) const
bool hasParameterizedSize() const
const std::string & name() const
OperandSet readOperands(int cycle) const
std::string opcodePort() const
CostEstimationData costEstimationData(RowID id) const
CostFunctionPlugin * costFunctionPluginByID(RowID pluginID) const
std::string widthParameter() const
bool hasCostFunction() const
virtual bool isOpcodeSetting() const =0
RowID rfEntryIDOfImplementation(RowID implID) const
RFArchitecture & architecture() const
std::string rstPort() const
std::string glockReqPort() const
std::vector< std::string > synFiles
int parameterCount() const
virtual FUPort * port(int operand) const
RFExternalPort & externalPort(int index) const
RowID busReference() const
std::string sizeParameter() const
static const std::string FU_ENTRIES
bool hasGuardSupport(const std::string &port) const
virtual bool hasArchitecture() const
const std::string & name() const
static const std::string COST_PLUGINS
virtual PipelineElement * pipelineElement(int index) const
std::string implFileVerilog
std::vector< std::string > simFiles
std::string parameterDependency(int index) const
@ BIDIR
Bidirectional port.
FUArchitecture & architecture() const
virtual RFArchitecture * rfArchitectureByID(RowID id) const
const HDB::HDBManager & hdb_
HDB to create html from.
std::string type
Type of the parameter.
virtual int operationCount() const
RowID fuEntryIDOfImplementation(RowID implID) const
bool hasParameterizedWidth() const
static const std::string RF_ENTRIES
RFImplementation & implementation() const
RowID socketReference() const
std::string loadPort() const
std::string pathToFile() const
std::string opcodeOperation(int index) const
std::set< int > OperandSet
Set for operand indexes.
std::set< RowID > busCostEstimationDataIDs(RowID busID) const
virtual bool isTriggering() const =0
virtual int portCount() const
virtual int pipelineElementCount() const
std::vector< OperationImplementationResource > resources
RFPortImplementation & port(int index) const
bool hasGuardSupport() const
bool hasBusReference() const
std::string name
Name of the parameter.
int opcode(const std::string &operation) const
std::set< RowID > socketCostEstimationDataIDs(RowID socketID) const
std::string architecturePort() const
OperationImplementation OperationImplementationByID(RowID id) const
RowID fuReference() const
virtual std::string name() const
std::string pluginFilePath() const
Parameter parameter(int index) const
std::string opcodePort() const
std::set< RowID > rfCostEstimationDataIDs(RowID rfImplID) const
int architecturePortCount() const
bool hasRFReference() const
int readPortCount() const
std::string guardPort() const
ExecutionPipeline * pipeline() const
std::string value
Value of the parameter.
Parameter parameter(int index) const
std::string moduleName() const
virtual HWOperation * operation(const std::string &name) const
std::string description() const
std::set< RowID > fuCostEstimationDataIDs(RowID fuImplID) const
int bidirPortCount() const
virtual bool hasImplementation() const
CostFunctionPluginType type() const
FUImplementation & implementation() const
std::string glockPort() const
std::string guardPort() const
int externalPortCount() const
FUEntry * fuByEntryID(RowID id) const
Direction direction() const
FUPortImplementation & architecturePort(int index) const
std::string widthFormula() const
static const std::string FU_ARCHITECTURES
bool separateAddressCycleParameter() const
virtual bool hasArchitecture() const
static const std::string RF_ARCHITECTURES
int externalPortCount() const
int parameterDependencyCount() const
virtual int width() const
int writePortCount() const
bool isResourceUsed(const std::string &name, int cycle) const
RFEntry * rfByEntryID(RowID id) const
std::string widthFormula() const