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>";
914 stream <<
"Function unit cost estimator.";
916 stream <<
"Register file cost estimator.";
918 stream <<
"Decompressor cost estimator.";
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>";
int RowID
Type definition of row ID in relational databases.
bool hasBusReference() const
bool hasFUReference() const
RowID busReference() const
RowID socketReference() const
bool hasSocketReference() const
RowID rfReference() const
bool hasRFReference() const
RowID fuReference() const
virtual std::string stringValue() const
void costFunctionPluginToHtml(RowID id, std::ostream &stream)
static const std::string OPERATION_IMPLEMENTATIONS
static const std::string RF_IMPLEMENTATIONS
void socketEntryToHtml(RowID id, std::ostream &stream)
static const std::string RF_IU_ENTRIES
void busEntryToHtml(RowID id, std::ostream &stream)
void fuImplToHtml(RowID id, std::ostream &stream)
void OperationImplementationResourceToHtml(RowID id, std::ostream &stream)
void fuArchToHtml(RowID id, std::ostream &stream)
static const std::string COST_PLUGINS
HDBToHtml(const HDB::HDBManager &hdb)
const HDB::HDBManager & hdb_
HDB to create html from.
static const std::string FU_ENTRIES
static const std::string FU_ARCHITECTURES
void fuEntryToHtml(RowID id, std::ostream &stream)
static const std::string RF_ARCHITECTURES
void OperationImplementationToHtml(RowID id, std::ostream &stream)
void rfArchToHtml(RowID id, std::ostream &stream)
static const std::string SOCKET_ENTRIES
static const std::string RF_ENTRIES
void rfEntryToHtml(RowID id, std::ostream &stream)
static const std::string OPERATION_IMPLEMENTATION_RESOURCES
static const std::string FU_IMPLEMENTATIONS
static const std::string BUS_ENTRIES
void rfImplToHtml(RowID id, std::ostream &stream)
std::string pathToFile() const
@ COST_RF
register file cost estimator
@ COST_ICDEC
interconnection network & decoder cost estimator
@ COST_FU
function unit cost estimator
@ COST_DECOMP
decompressor cost estimator
CostFunctionPluginType type() const
std::string description() const
std::string pluginFilePath() const
std::string widthFormula() const
std::string parameterDependency(int index) const
int parameterDependencyCount() const
std::string description() const
Direction direction() const
bool hasGuardSupport(const std::string &port) const
bool hasParameterizedWidth(const std::string &port) const
TTAMachine::FunctionUnit & architecture() const
FUImplementation & implementation() const
virtual bool hasImplementation() const
FUArchitecture & architecture() const
virtual bool hasArchitecture() const
FUPortImplementation & architecturePort(int index) const
Parameter parameter(int index) const
std::string glockReqPort() const
std::string opcodeOperation(int index) const
int externalPortCount() const
int architecturePortCount() const
int parameterCount() const
FUExternalPort & externalPort(int index) const
std::string opcodePort() const
int opcode(const std::string &operation) const
std::string architecturePort() const
std::string guardPort() const
std::string widthFormula() const
bool hasCostFunction() const
CostFunctionPlugin & costFunction() const
std::set< RowID > socketCostEstimationDataIDs(RowID socketID) const
std::set< RowID > busCostEstimationDataIDs(RowID busID) const
FUEntry * fuByEntryID(RowID id) const
CostFunctionPlugin * costFunctionPluginByID(RowID pluginID) const
OperationImplementationResource OperationImplementationResourceByID(RowID id) const
std::set< RowID > costFunctionPluginDataIDs(RowID pluginID) const
virtual RFArchitecture * rfArchitectureByID(RowID id) const
OperationImplementation OperationImplementationByID(RowID id) const
CostEstimationData costEstimationData(RowID id) const
std::set< RowID > fuCostEstimationDataIDs(RowID fuImplID) const
std::set< RowID > rfCostEstimationDataIDs(RowID rfImplID) const
RowID fuEntryIDOfImplementation(RowID implID) const
RowID rfEntryIDOfImplementation(RowID implID) const
virtual FUArchitecture * fuArchitectureByID(RowID id) const
RFEntry * rfByEntryID(RowID id) const
std::string glockPort() const
int implementationFileCount() const
std::string moduleName() const
std::string rstPort() const
BlockImplementationFile & file(int index) const
std::string clkPort() const
std::string loadPort() const
int readPortCount() const
bool hasGuardSupport() const
bool hasParameterizedWidth() const
int writePortCount() const
int bidirPortCount() const
bool zeroRegister() const
bool hasParameterizedSize() const
virtual bool hasImplementation() const
RFArchitecture & architecture() const
virtual bool hasArchitecture() const
RFImplementation & implementation() const
RFExternalPort & externalPort(int index) const
int parameterCount() const
RFPortImplementation & port(int index) const
bool separateAddressCycleParameter() const
std::string sizeParameter() const
std::string widthParameter() const
std::string guardPort() const
Parameter parameter(int index) const
int externalPortCount() const
std::string opcodePortWidthFormula() const
Direction direction() const
std::string opcodePort() const
virtual int width() const
virtual bool isOpcodeSetting() const =0
virtual bool isTriggering() const =0
OperandSet writtenOperands(int cycle) const
OperandSet readOperands(int cycle) const
std::set< int > OperandSet
Set for operand indexes.
bool isResourceUsed(const std::string &name, int cycle) const
virtual int pipelineElementCount() const
virtual HWOperation * operation(const std::string &name) const
virtual int operationCount() const
virtual PipelineElement * pipelineElement(int index) const
virtual BaseFUPort * port(const std::string &name) const
ExecutionPipeline * pipeline() const
virtual FUPort * port(int operand) const
const std::string & name() const
const std::string & name() const
virtual std::string name() const
virtual int portCount() const
@ BIDIR
Bidirectional port.
std::vector< std::string > synFiles
std::vector< std::string > simFiles
std::vector< OperationImplementationResource > resources
std::string implFileVerilog
std::string value
Value of the parameter.
std::string type
Type of the parameter.
std::string name
Name of the parameter.