void PhysicalSideworks::updatePFUConfigurationParameters(){ graph_t::vertex_descriptor zero = this->getFU(Fixed::ZERO+"_auto_0"); for(auto fu:fuList){ for(auto i : fu->inports){ if(!i.second->isConnected()){ addFixedConection(zero,getFU(fu->name),Fixed::FIXED_OUT,i.first); } } } getReadXbarLuts(IResourceCostConstants::MUXCOST[IResourceCostConstants::VIRTEX5]); int mem_offset = 0x00D80000; for (auto mem : fus_by_type[Mem::TYPE]){ mem->addProperty(Mem::PROP_BASEADDRESS,mem_offset); mem_offset += std::pow(2,mem->getProperty(Mem::PROP_AWIDTH))*4; // std::cout<<mem->name<<" "<<mem->getProperty(Mem::PROP_ID)<<" "<<nwords<<std::endl; } int bits = 0; for(auto fu:fuList){ for(auto i : fu->inports){ (i.second)->setXbarBitPointer(bits); bits += (i.second)->getConfSize(); } } xbar_conf_bits = bits; for(auto fu:fuList){ fu->setConfBitPointer(bits); bits +=fu->getConfSize(); } fu_conf_bits = bits; }
FunctionalUnitTest::MyStateInterface* FunctionalUnitTest::WaitingForACKReconfiguration::doOnData(const CompoundPtr&) { // if this is called we assume this is the ack and throw it away // we need to wakeup the other FUs getFU()->wakeup(); return getFSM()->createState<ReadyForTransmissionReconfiguration>(); }
FunctionalUnitTest::MyStateInterface* FunctionalUnitTest::ReadyForTransmissionReconfiguration::doWakeup() { getFU()->getReceptor()->wakeup(); return this; }
FunctionalUnitTest::MyStateInterface* FunctionalUnitTest::ReadyForTransmissionReconfiguration::doSendData(const CompoundPtr& compound) { getFU()->getConnector()->getAcceptor(compound)->sendData(compound); return this; }
FunctionalUnitTest::MyStateInterface* FunctionalUnitTest::ReadyForTransmission::doSendData(const CompoundPtr& compound) { getFU()->getConnector()->getAcceptor(compound)->sendData(compound); return getFSM()->createState<WaitingForACK>(); }