Lines Matching defs:laser
133 // Update the laser
134 Model* laser = getSubInstance("Laser");
135 laser->setProperty("LaserEventTime", 1.0 / data_rate);
136 laser->setProperty("OptUtil", opt_util);
137 laser->update();
180 // Set enable signals for the laser, if applicable
183 // Figure out how many cycles the laser needs to be on
186 OpticalModel* laser = (OpticalModel*) getSubInstance("Laser");
187 laser->getInputPort("LaserEnable")->setTransitionInfo(TransitionInfo(0.0, 1.0, cycles - 1.0));
188 laser->use();
202 // Create laser
203 OpticalModel* laser = NULL;
205 laser = new ThrottledLaserSource("Laser", getTechModel());
207 laser = new LaserSource("Laser", getTechModel());
209 ASSERT(false, "[Error] " + getInstanceName() + " -> Unknown laser type '" + laser_type + "'!");
211 laser->setParameter("OutStart", 0);
212 laser->setParameter("OutEnd", number_wavelengths-1);
213 laser->setParameter("MaxDetectors", number_max_readers);
214 laser->setParameter("MinDetectors", number_min_readers);
215 laser->construct();
217 addSubInstances(laser, 1.0);
218 getAreaResult("Photonic")->addSubResult(laser->getAreaResult("Photonic"), "Laser", 1.0);
219 // Connect laser output port
220 opticalPortConnect(laser, "Out", "LaserToMod");
222 // Without laser gating, laser is pure NDD power
224 getNddPowerResult("Laser")->addSubResult(laser->getNddPowerResult("Laser"), "Laser", 1.0);
225 // With laser power gating, laser is an event
228 // If laser is throttled, only pay for the amount needed to reach some number of readers
229 getEventResult("BroadcastFlit")->addSubResult(laser->getEventResult("Laser" + (String) number_max_readers), "Laser", 1.0);
231 getEventResult("MulticastFlit" + (String) i)->addSubResult(laser->getEventResult("Laser" + (String) i), "Laser", 1.0);