Go to the documentation of this file.
153 bool written =
false;
156 for (
int i = 0; i < operationCount; i++) {
159 int latency = operation->
latency();
160 for (
int cycle = 0; cycle < latency; cycle++) {
172 if (read && written) {
177 if (read && written) {
181 }
else if (written) {
199 this->architecture().operationCount()) {
203 std::map<const FUPort*, const FUPort*> portMap;
204 for (
int i = 0; i < rightHand.
architecture().operationPortCount(); i++) {
206 std::pair<const FUPort*, const FUPort*>(
212 for (
int i = 0; i < rightHand.
architecture().operationCount(); i++) {
218 rightHandOp->
name());
229 if (rightHandOp->
isBound(*port)) {
230 int io = rightHandOp->
io(*port);
232 if (samePort == NULL) {
235 const FUPort* existingSamePort =
236 MapTools::valueForKey<const FUPort*>(portMap, port);
237 if (existingSamePort != NULL &&
238 existingSamePort != samePort) {
262 std::pair<const FUPort*, const FUPort*>(port, samePort));
269 for (
int cycle = 0; cycle < rightHandOp->
latency(); cycle++) {
274 if (written1 != written2) {
281 if (read1 != read2) {
293 usage.
usage1.insert(elem);
301 usage.
usage2.insert(elem);
304 plineElementUsages.push_back(usage);
308 std::set<const TTAMachine::PipelineElement*> difference;
309 for (
size_t i = 0; i < plineElementUsages.size(); i++) {
311 plineElementUsages[i].usage2,
314 if (!difference.empty()) {
TTAMachine::FunctionUnit * fu_
The function unit.
bool hasParameterizedWidth(const std::string &port) const
virtual bool isOpcodeSetting() const
TTAMachine::FunctionUnit & architecture() const
FUArchitecture(TTAMachine::FunctionUnit *fu)
std::vector< PipelineElementUsage > PipelineElementUsageTable
typedef for PipelineElemetnUsageTable
OperandSet writtenOperands(int cycle) const
const std::string & name() const
OperandSet readOperands(int cycle) const
virtual bool isTriggering() const
PortSet parameterizedPorts_
Parameterized ports.
virtual FUPort * port(int operand) const
void setParameterizedWidth(const std::string &port)
int io(const FUPort &port) const
bool hasGuardSupport(const std::string &port) const
const std::string & name() const
virtual PipelineElement * pipelineElement(int index) const
Struct PipelineElementUsage.
Direction
Direction of port.
@ BIDIR
Bidirectional port.
HDB::Direction portDirection(const std::string &port) const
bool isPortWritten(const FUPort &port, int cycle) const
bool isBound(const FUPort &port) const
bool operator==(const FUArchitecture &rightHand) const
virtual int operationCount() const
std::set< const TTAMachine::PipelineElement * > usage1
void setGuardSupport(const std::string &port)
std::set< int > OperandSet
Set for operand indexes.
virtual int pipelineElementCount() const
bool isPortRead(const FUPort &port, int cycle) const
virtual bool hasOperationPort(const std::string &name) const
virtual ~FUArchitecture()
virtual std::string name() const
std::set< const TTAMachine::PipelineElement * > usage2
ExecutionPipeline * pipeline() const
virtual HWOperation * operation(const std::string &name) const
virtual FUPort * operationPort(const std::string &name) const
virtual FunctionUnit * copy() const
PortSet guardedPorts_
Port that support guard.
virtual int width() const
bool isResourceUsed(const std::string &name, int cycle) const