DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
timing.cli.align Namespace Reference

Functions

 align (obj)
 
 applydelay (ctx, obj, addr, cdelay, fdelay, mux, force)
 
 measuredelay (ctx, obj, addr, mux, sfp_control)
 
 toggletx (obj, addr, on)
 
 scanmux (obj)
 
 switchnlock (obj, mux)
 

Function Documentation

◆ align()

timing.cli.align.align ( obj)

Definition at line 23 of file align.py.

23def align(obj):
24 lDevice = obj.mDevice
25 lMaster = obj.mMaster
26 obj.mGlobal = lMaster.getNode('global')
27 #obj.mACmd = lMaster.getNode('acmd')
28 #obj.mEcho = lMaster.getNode('echo')
29 #bj.mIO = lDevice.getNode('io')
30# ------------------------------------------------------------------------------
31
32
33# ------------------------------------------------------------------------------
34@align.command('apply-delay', short_help="Send delay adjust command endpoint")
35@click.argument('addr', type=toolbox.IntRange(0x0,0xffff))
36@click.argument('cdelay', type=toolbox.IntRange(0x0,0xf))
37@click.argument('fdelay', type=toolbox.IntRange(0x0,0xfff))
38@click.option('--mux', '-m', type=click.IntRange(0,12), help='Mux select')
39@click.option('--force', '-f', is_flag=True, default=False, help='Skip RTT measurement')
40@click.pass_obj
41@click.pass_context

◆ applydelay()

timing.cli.align.applydelay ( ctx,
obj,
addr,
cdelay,
fdelay,
mux,
force )

Definition at line 42 of file align.py.

42def applydelay(ctx, obj, addr, cdelay, fdelay, mux, force):
43
44 lDevice = obj.mDevice
45 lBoardType = obj.mBoardType
46 lTopDesign = obj.mTopDesign
47
48 # Are we working with a board with a return path mux (i.e. a fanout board)?
49 if lBoardType in [kBoardPC059, kBoardFIB]:
50 if mux is None:
51 if force == True:
52 lTopDesign.apply_endpoint_delay(addr, cdelay, fdelay, 0, not force, True, 0)
53 else:
54 raise RuntimeError('MUX board: please supply an SFP mux channel')
55 else:
56 lTopDesign.apply_endpoint_delay(addr, cdelay, fdelay, 0, not force, True, mux)
57
58 else:
59 lTopDesign.apply_endpoint_delay(addr, cdelay, fdelay, 0, not force, True)
60# ------------------------------------------------------------------------------
61
62
63# ------------------------------------------------------------------------------
64@align.command('measure-delay', short_help="Measure endpoint round trip time")
65@click.argument('addr', type=toolbox.IntRange(0x0,0xffff))
66@click.option('--mux', '-m', type=click.IntRange(0,12), help='Mux select (fanout only)')
67@click.option('--sfp-control/--no-sfp-control', default=True, help='Control SFP or not')
68@click.pass_obj
69@click.pass_context

◆ measuredelay()

timing.cli.align.measuredelay ( ctx,
obj,
addr,
mux,
sfp_control )

Definition at line 70 of file align.py.

70def measuredelay(ctx, obj, addr, mux, sfp_control):
71
72 lDevice = obj.mDevice
73 lBoardType = obj.mBoardType
74 lTopDesign = obj.mTopDesign
75
76 # or a different type of fanout board
77 if lBoardType in [kBoardPC059, kBoardFIB] and sfp_control == True:
78 if mux is not None:
79 echo("Endpoint (adr: {}, mux: {}) RTT: {}".format(addr,mux,lTopDesign.measure_endpoint_rtt(addr, sfp_control, mux)))
80 else:
81 raise RuntimeError('MUX board: please supply an SFP mux channel')
82 else:
83 echo("Endpoint (adr: {}) RTT: {}".format(addr,lTopDesign.measure_endpoint_rtt(addr, sfp_control)))
84# ------------------------------------------------------------------------------
85
86
87# ------------------------------------------------------------------------------
88@align.command('toggle-tx', short_help="Control the endpoint SFP Tx laser")
89@click.argument('addr', type=toolbox.IntRange(0x0,0xffff))
90@click.option('--on/--off', default=True, help='enable/disable tx')
91@click.pass_obj

◆ scanmux()

timing.cli.align.scanmux ( obj)

Definition at line 102 of file align.py.

102def scanmux(obj):
103
104 lDevice = obj.mDevice
105 lTopDesign = obj.mTopDesign
106 lBoardType = obj.mBoardType
107
108 if lBoardType in [kBoardPC059, kBoardFIB]:
109 lTopDesign.scan_sfp_mux()
110 else:
111 raise RuntimeError('Mux scan is only available on MUX boards')
112# ------------------------------------------------------------------------------
113
114
115# ------------------------------------------------------------------------------
116@align.command('switch-n-lock', short_help="Wait for RTT endpoint to become ready")
117@click.option('--mux', '-m', type=click.IntRange(0,12), help='Mux select (fanout only)')
118@click.pass_obj

◆ switchnlock()

timing.cli.align.switchnlock ( obj,
mux )

Definition at line 119 of file align.py.

119def switchnlock(obj, mux):
120
121 lDevice = obj.mDevice
122 lTopDesign = obj.mTopDesign
123 lBoardType = obj.mBoardType
124 lMaster = obj.mMaster
125
126 # or a different type of fanout board
127 if lBoardType in [kBoardPC059, kBoardFIB]: #TODO: don't include fib v2
128 if mux is not None:
129 lTopDesign.switch_mux(mux)
130 lMaster.enable_upstream_endpoint()
131 else:
132 raise RuntimeError('MUX board: please supply an SFP mux channel')
133 else:
134 lMaster.enable_upstream_endpoint()
135# ------------------------------------------------------------------------------

◆ toggletx()

timing.cli.align.toggletx ( obj,
addr,
on )

Definition at line 92 of file align.py.

92def toggletx(obj, addr, on):
93
94 lMaster = obj.mMaster
95 lMaster.switch_endpoint_sfp(addr, on)
96# ------------------------------------------------------------------------------
97
98
99# ------------------------------------------------------------------------------
100@align.command('scan-mux', short_help="Scan SFP mux for transmitting SFPs")
101@click.pass_obj