Replies: 2 comments 1 reply
-
The call to map/sparta/sparta/ports/Port.hpp Line 378 in 3092846 That list is used in binding here: map/sparta/sparta/ports/Port.hpp Line 619 in 3092846 The actual precedence is made during the call map/sparta/sparta/ports/Port.hpp Line 630 in 3092846 and eventually established to the internal event (Payload for example) here: map/sparta/sparta/ports/DataPort.hpp Line 458 in 3092846 Hope this clarifies how this works. |
Beta Was this translation helpful? Give feedback.
-
Sorry to ask the question in the improper place, and thanks for you answer. if((inp->getPortDelay() == 0) && presume_zero_delay_) {
for(auto & pd : port_producers_)
{
for(auto & cons : inp->port_consumers_) {
if(pd->getSchedulingPhase() == cons->getSchedulingPhase()) {
pd->precedes(cons, reason);
// Here just add a precedence between: Producer >> Consumers
// the Consumers are saved in: registerConsumerEvent()
}
}
inp->setProducerPrecedence_(pd);
// Here just add a precedence between: Producer >> Inport.InnerEvent
}
} So after Bind, the DAG is: graph LR
1(Producer) --> 2(Consumers)
1 --> 3("InPort's InnerEvent")
3 -.-x 2
My question is: thanks a lot. |
Beta Was this translation helpful? Give feedback.
-
hi, viewing the code from sparta/ports/port.cpp:
from the OutPort.bind(...), there is a comment:
// ,--------------------------------------------------.
// | V
// producer -> [ inport internal delivery ]* -> consumer
The inport -> consumer precedence is established during the consumer registration from a call to:
InPort::registerConsumerEvent()
but in Inport.registerConsumerEvent(...):
I can't find the code to establish the precedence of: InPort >> Consumer.
What's the considerations in here ?
thanks a lot.
Beta Was this translation helpful? Give feedback.
All reactions