Example #1
0
def setup_marocco(wafer=37):
    """Setup hardwarm mapping on a wafer. Defaults to 37"""
    marocco = PyMarocco()
    marocco.neuron_placement.default_neuron_size(4)
    marocco.neuron_placement.minimize_number_of_sending_repeaters(False)
    marocco.merger_routing.strategy(marocco.merger_routing.one_to_one)

    marocco.bkg_gen_isi = 125
    marocco.pll_freq = 125e6

    marocco.backend = PyMarocco.Hardware
    marocco.calib_backend = PyMarocco.XML
    marocco.defects.path = marocco.calib_path = "/wang/data/calibration/brainscales/default-2017-09-26-1"
    marocco.defects.backend = Defects.XML
    marocco.default_wafer = C.Wafer(int(os.environ.get("WAFER", wafer)))
    marocco.param_trafo.use_big_capacitors = True
    marocco.input_placement.consider_firing_rate(True)
    marocco.input_placement.bandwidth_utilization(0.8)
    return marocco
    'v_thresh': -10,
    'e_rev_I': -100.,
    'e_rev_E': 60.,
    'tau_m': 20.,
    'tau_refrac': 0.1,
    'tau_syn_E': 5.,
    'tau_syn_I': 5.,
}

marocco = PyMarocco()
marocco.neuron_placement.default_neuron_size(4)
marocco.neuron_placement.minimize_number_of_sending_repeaters(False)
marocco.merger_routing.strategy(marocco.merger_routing.one_to_one)

marocco.bkg_gen_isi = 125
marocco.pll_freq = 125e6

marocco.backend = PyMarocco.Hardware
marocco.calib_backend = PyMarocco.XML
marocco.defects.path = marocco.calib_path = "/wang/data/calibration/ITL_2016"
marocco.defects.backend = Defects.XML
marocco.default_wafer = C.Wafer(33)
marocco.param_trafo.use_big_capacitors = True
marocco.input_placement.consider_firing_rate(True)
marocco.input_placement.bandwidth_utilization(0.8)

runtime = Runtime(marocco.default_wafer)
pynn.setup(marocco=marocco, marocco_runtime=runtime)

#  ——— set up network ——————————————————————————————————————————————————————————
    h276.drivers().disable(SynapseDriverOnHICANN(C.Enum(6)))
    h276.drivers().disable(SynapseDriverOnHICANN(C.Enum(20)))
    h276.drivers().disable(SynapseDriverOnHICANN(C.Enum(102)))
    h276.drivers().disable(SynapseDriverOnHICANN(C.Enum(104)))
    marocco.defects.inject(HICANNGlobal(Enum(276)), h276)

    h277 = pyredman.Hicann()
    #h277.drivers().disable(SynapseDriverOnHICANN(C.Enum(2)))
    marocco.defects.inject(HICANNGlobal(Enum(277)), h277)

    #if simulator_name == "nmpm1":
    #    marocco.membrane = "membrane.dat"
    #    marocco.analog_enum = 0
    #    marocco.hicann_enum = HICANNGlobal(Enum(276)).id().value()

    marocco.pll_freq = 100e6
    marocco.bkg_gen_isi = 10000
    marocco.only_bkg_visible = False


    pynn.setup(marocco=marocco)
else:
    import pyNN.nest as pynn

# helper function for populations
# could (should) be used for spinnaker as well
def get_pops(n_in_pop, hicann, n_used_neuronblocks = 7):

    # neurons needed to fill up buffer
    if simulator_name in ("nmpm1", "ess"):
        n_in_tmp = 32/(neuron_size/2) - n_in_pop