ATLAS Offline Software
Loading...
Searching...
No Matches
python.L1.Config.LegacyTopoMergerMap Namespace Reference

Functions

 createMergerBoard (legacyBoard0, legacyBoard1)

Variables

 log = logging.getLogger(__name__)
 MC = namedtuple('MC', "target_bit, topo_board, source_bit, signals")
list __mapping

Function Documentation

◆ createMergerBoard()

python.L1.Config.LegacyTopoMergerMap.createMergerBoard ( legacyBoard0,
legacyBoard1 )

Definition at line 48 of file LegacyTopoMergerMap.py.

48def createMergerBoard(legacyBoard0, legacyBoard1):
49
50 legacyOccupation = [[32*[None],32*[None]],[32*[None],32*[None]]]
51 for boardNumber, board in enumerate([legacyBoard0, legacyBoard1]):
52 for conn in board["connectors"][0]["algorithmGroups"]:
53 fpga = conn['fpga']
54 clock = conn['clock']
55 for topoAlgDef in conn['algorithms']:
56 lines = topoAlgDef.outputlines
57 if len(lines)==1:
58 legacyOccupation[boardNumber][clock][ 16*fpga + topoAlgDef.outputbits] = lines[0]
59 else:
60 for bit,line in enumerate(lines):
61 legacyOccupation[boardNumber][clock][ 16*fpga + bit + topoAlgDef.outputbits[0]] = line
62
63 signals = [32*[None], 32*[None]]
64 for mc in __mapping:
65 for clock in [0,1]:
66 algFromMapping = mc.signals[clock]
67 if algFromMapping is None:
68 continue
69 signals[clock][mc.target_bit] = "R2TOPO_"+algFromMapping
70 algFromLegacyBoardDef = legacyOccupation[mc.topo_board][clock][mc.source_bit]
71 if algFromMapping != algFromLegacyBoardDef:
72 fpga = mc.source_bit // 16
73 bit = mc.source_bit % 16
74 msg = f"Legacy board mapping expects line {algFromMapping} on LegacyBoard{mc.topo_board}, fpga {fpga}, " +\
75 f"clock {clock}, bit {bit} but board defines {algFromLegacyBoardDef}"
76 log.error(msg)
77 raise RuntimeError("Mapping doesn't match LegacyBoard definition")
78
79
80 board = {
81 "type": "merger",
82 "connectors": [{
83 "name" : "LegacyTopoMerged",
84 "format" : "simple",
85 "nbitsDefault" : 1,
86 "type" : "electrical",
87 "legacy" : False,
88 "signalGroups" : [
89 {
90 "clock" : 0,
91 "signals" : signals[0]
92 },
93 {
94 "clock" : 1,
95 "signals" : signals[1]
96 }
97 ]
98 }]
99 }
100 return {"LegacyTopoMerger": board}

Variable Documentation

◆ __mapping

list python.L1.Config.LegacyTopoMergerMap.__mapping
private

Definition at line 12 of file LegacyTopoMergerMap.py.

◆ log

python.L1.Config.LegacyTopoMergerMap.log = logging.getLogger(__name__)

Definition at line 6 of file LegacyTopoMergerMap.py.

◆ MC

python.L1.Config.LegacyTopoMergerMap.MC = namedtuple('MC', "target_bit, topo_board, source_bit, signals")

Definition at line 8 of file LegacyTopoMergerMap.py.