Go to the documentation of this file.
77 "Operation Implementations";
79 "Operation Implementation Resources";
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;
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;
252 stream <<
"<html><body><small>" << endl;
253 stream <<
"<b>Bus entry " <<
id <<
"</b><br>" << endl;
255 stream <<
"<tr><td align=right><b>Cost estimation data:</b></td><td>";
259 if (!costDataIDs.empty()) {
260 stream <<
"<b>Cost estimation data:</b>" << endl;
261 stream <<
"<table bgcolor=#bbbbbb>" << endl;
262 stream <<
"<tr><th>Name</th><th>Value</th>"
263 <<
"<th>Plugin</th></tr>" << endl;
265 stream <<
"No cost estimation data.<br>" << endl;
267 std::set<RowID>::const_iterator iter = costDataIDs.begin();
268 for (; iter != costDataIDs.end(); iter++) {
270 stream <<
"<tr><td>" << data.
name() <<
"</td>"
271 <<
"<td align=right>";
273 stream <<
"</td><td align=center><a href=\"/" <<
COST_PLUGINS
275 << data.
pluginID() <<
"</a></td></tr>" << endl;
277 stream <<
"</table>" << endl;
278 stream <<
"</small></body></html>" << endl;
291 stream <<
"<html><body><small>" << endl;
292 stream <<
"<b>Socket entry " <<
id <<
"</b><br>" << endl;
294 stream <<
"<tr><td align=right><b>Cost estimation data:</b></td><td>";
298 if (!costDataIDs.empty()) {
299 stream <<
"<b>Cost estimation data:</b>" << endl;
300 stream <<
"<table bgcolor=#bbbbbb>" << endl;
301 stream <<
"<tr><th>Name</th><th>Value</th>"
302 <<
"<th>Plugin</th></tr>" << endl;
304 stream <<
"No cost estimation data.<br>" << endl;
306 std::set<RowID>::const_iterator iter = costDataIDs.begin();
307 for (; iter != costDataIDs.end(); iter++) {
309 stream <<
"<tr><td>" << data.
name() <<
"</td>"
310 <<
"<td align=right>";
312 stream <<
"</td><td align=center><a href=\"/" <<
COST_PLUGINS
314 << data.
pluginID() <<
"</a></td></tr>" << endl;
316 stream <<
"</table>" << endl;
317 stream <<
"</small></body></html>" << endl;
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;
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;
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;
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;
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;
989 stream <<
"<html><body>";
990 stream <<
"<b>Operation Implementation</b><br/>";
991 stream <<
"operation : " << op.
name <<
"<br/>";
992 stream <<
"implementation (VHDL) : " << op.
implFileVhdl <<
"<br/>";
993 stream <<
"implementation (Verilog) : " << op.
implFileVerilog <<
"<br/>";
995 stream <<
"resource : " << r.name
999 stream <<
"</body></html>\n";
1007 stream <<
"<html><body>";
1008 stream <<
"<b>Operation Implementation Resource</b><br/>";
1009 stream <<
"name : " << res.
name <<
"<br/>";
1010 for (
const auto& sim : res.
simFiles) {
1011 stream <<
"simulation file : " << sim <<
"<br/>";
1013 for (
const auto& syn : res.
synFiles) {
1014 stream <<
"synthesis file : " << syn <<
"<br/>";
1016 stream <<
"</body></html>";
RowID rfReference() const
std::string clkPort() const
static const std::string RF_IMPLEMENTATIONS
BlockImplementationFile & file(int index) const
void rfArchToHtml(RowID id, std::ostream &stream)
CostFunctionPlugin & costFunction() const
std::string opcodePortWidthFormula() const
virtual FUArchitecture * fuArchitectureByID(RowID id) const
void costFunctionPluginToHtml(RowID id, std::ostream &stream)
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.
void busEntryToHtml(RowID id, std::ostream &stream)
FUExternalPort & externalPort(int index) const
static const std::string FU_IMPLEMENTATIONS
void rfEntryToHtml(RowID id, std::ostream &stream)
bool hasFUReference() const
virtual BaseFUPort * port(const std::string &name) const
OperationImplementationResource OperationImplementationResourceByID(RowID id) const
int parameterCount() const
void fuArchToHtml(RowID id, std::ostream &stream)
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
void OperationImplementationToHtml(RowID id, std::ostream &stream)
static const std::string OPERATION_IMPLEMENTATIONS
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
HDBToHtml(const HDB::HDBManager &hdb)
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
static const std::string BUS_ENTRIES
const HDB::HDBManager & hdb_
HDB to create html from.
std::string type
Type of the parameter.
static const std::string RF_IU_ENTRIES
virtual int operationCount() const
static const std::string OPERATION_IMPLEMENTATION_RESOURCES
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.
void fuImplToHtml(RowID id, std::ostream &stream)
std::set< RowID > busCostEstimationDataIDs(RowID busID) const
virtual bool isTriggering() const =0
virtual int portCount() const
virtual int pipelineElementCount() const
std::vector< OperationImplementationResource > resources
void rfImplToHtml(RowID id, std::ostream &stream)
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
static const std::string SOCKET_ENTRIES
Parameter parameter(int index) const
std::string opcodePort() const
std::set< RowID > rfCostEstimationDataIDs(RowID rfImplID) const
int architecturePortCount() const
bool hasRFReference() const
void fuEntryToHtml(RowID id, std::ostream &stream)
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
void socketEntryToHtml(RowID id, std::ostream &stream)
void OperationImplementationResourceToHtml(RowID id, std::ostream &stream)
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