This page is designed to help you get familiar with the
AMC13Tool C++ software and get comfortable with some basic AMC13 functionalities. For a more in-depth look at software commands, please visit the
AMC13Tool link on the main page. For a more detailed description of certain AMC13 procedures, please visit the
AMC13ToolRecipes link on the home page.
Basic Prerequisites
- First, you will need to make sure that your AMC13 is properly installed in you uTCA crate and is connected to the network. For information on setting up your AMC13, please visit the Short Specification
link on the main page.
- Next, you will need to make sure you have a working version of the software. For information on installing the latest release, please visit the AMC13CppSoftware link on the main page.
Getting Started
- Before running the Tool, you will need to make sure that the environment is correctly set.
- Once your environment is properly set, you are ready to run the Tool:
- If you are using xDAQ (and have installed the release as daqowner):
$ ~daqowner/dist/bin/AMC13Tool.exe
- If you are using a non-xDAQ StandAlone software package, run the executable in the
/bin
directory of the package's home folder:
$ cd amc13Standalone_RPM_2012_12_04
$ ./bin/AMC13Tool
- NOTE: this executable can be run from any directory, as long as the path to it is correctly specified. If you don't want to specify the path every time, copy the executable to your user directory's
/bin
folder.
$ cp amc13Standalone_RPM_2012_12_04/bin/AMC13Tool ~/bin
- If the Tool has started correctly, you should see an opening display similar to this:
[cms2] /home/chill90 > AMC13Tool
Serial number 9
spartan IP set to 192.168.1.236
virtex IP set to 192.168.1.237
Using address tables:
/home/chill90/amc13_standalone/2012-12-04/rpm/map/AMC13_AddressTable_S6.xml
/home/chill90/amc13_standalone/2012-12-04/rpm/map/AMC13_AddressTable_V6.xml
Pick an action (h for menu):
- To view a list of commands, type
'h'
:
Pick an action (h for menu): h
Command Menu:
------- General Commands -------
q quit
do <file> run script <file>
sh <command> run a shell <command>
------- AMC13 General Commands -------
i <ena_list> (d) (f) enable AMCs from input list. Enable (d)AQlink, (f)ake data,
(t) (l) use local (T)TC signal, enable (L)ocal triggers,
(r) (b) TTC(r)x, monBuf (b)ackpressure
lt <n>/(e)/(d) send <n> non-periodic local L1As or (e)nable/(d)isable periodic local L1As
tsp (o)/(b)/(r) <n> set local (O)rN/(B)cN/(R)andom L1A spacing to <n>
mm (e)/(d) (e)nable/(d)isable mega monitoring
st <level> display status with <level> of detail (0 least, 2 most, 1 default)
lst display SFP and DAQ link status
rg reset general (both chips)
rc reset counters (virtex)
tre (o) (e) reset TTC (O)ribit Number and/or TTC (E)vent Number
------- AMC13 Read/Write Commands -------
rs(v) <add> [count] single read from spartan (virtex) <add> to <add>+[count]
brs(v) <add> [count] block read [count] words from spartan (virtex) <add>
frs(v) <add> [count] fifo read spartan (virtex) <add> [count] times
ws(v) <add> <data> [count] single write <data> from spartan (virtex) <add> to <add>+[count]
bws(v) <add> [<data_list>] block write [<data_list>] from spartan (virtex) <add>
fws(v) <add> [<data_list>] fifo write [<data_list>] to spartan (virtex) <add>
------- AMC13 DAQ Commands -------
de enable DAQ link (from receiver end only!)
dsv (e)/(d) (e)nable/(d)isable saving received DAQ data to SDRAM
nw display number of DAQ words in buffer
rd display event
rk display event and check integrity
ne next event
df <file> [count] (c) (v) dump [count] events to <file>, (c) for continuous readout, (v) for verbose mode
(r) (rh) (rhk) (r) for reduced dump, (rh) for reduced w/ HTRs, (rhk) for reduced w/ HTRs & errors
------- AMC13 Flash Commands -------
fv get firmware version
rf <add> read 256 bytes from flash at <add>
vfh verify flash header
vs(v) verify spartan (virtex) flash
vbs verify backup spartan flash
pfh program flash header
pbs program spartan backup flash
ps(v) program spartan (virtex) flash
L load both Spartan and Virtex firmware from flash
------- uHTR (or other IPbus device) commands -------
ipadd <ip_addr> add new IPbus device with <ip_addr>
ipr <n> <addr> read from <addr> on ipbus device <n> ('a' for all devices)
ipw <n> <addr> <data> write <data> to <addr> on ipbus device <n> ('a' for all devices)
ipst read status from all uhtrs
- As a test procedure, we will take periodic local events using internally generated fake data and the internal TTC signal.
- First, you will need to make sure your TTC optical fiber is properly connected. You will need to loop back a fiber to the bottom-most SFP on the AMC13 front panel
.
- Next, you will need to enable the AMC ports, the internally generated TTC signal, and internal L1As. This can be done with the command:
Pick an action (h for menu): en 0-11 f t L
Enabling AMC inputs from list: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
Link status: 04100fff
Enable Fake Event Generator
Enable Local TTC Input Signal
Enable Local L1A generation
'CONTROL1': 00201185
- Now check the status of your AMC13 using the following command:
Pick an action (h for menu): st
*****AMC13 Status*****
Status display detail level: 1
Control 0: 0900000b
DAQLSC Link Down
DAQLSC Almost Full
Monitor Buffer Empty
Control 1: 00200185
TTS out is TTC signal out
Create fake event at L1A
Generate Internal L1A
Run Mode
Control 2: 00000000 (All bits read 0x0)
AMC Link Status: 00000fff
AMC Enabled Inputs: 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11
--No AMC links locked--
AMC Port Status: 0b6f0000
--All AMC Link Versions Correct--
Unsynced AMC Ports: 00, 01, 02, 03, 05, 06, 08, 09, 11
AMC Bc0 Status: 00000018
--No BC0s locked--
Local Trigger Control: 00000000
Periodic L1A every 0x1 orbit at BX = 500
0x1 trigger per burst
EVB Counters: (All 32-bit counters read 0x0)
Run time [0048]: 00000000 047b8392
Ready time [004a]: 00000000 047bf294
Busy time [004c]: 00000000 00000001
L1A ovfl warn time [0050]: 00000000 00000001
AMC Counters:
<---Link 00-----> <---Link 01-----> <---Link 02-----> <---Link 03-----> <---Link 04-----> <---Link 05----->
*******************************************All counters read 0x0*******************************************
<---Link 06-----> <---Link 07-----> <---Link 08-----> <---Link 09-----> <---Link 10-----> <---Link 11----->
*******************************************All counters read 0x0*******************************************
Your status may not look exactly like the one above, but it should be pretty close. As you can see, we are now in run mode and ready to take data (your 'Run Time' counter should be clicking away!).
- Next, we can set the orbit spacing of our periodic triggers. Let's set a trigger to occur every 256 orbits:
Pick an action (h for menu): tsp o 0x100
OrN spacing: 0x100
- Finally, we are ready to send triggers. I will enable triggers for about 10 seconds, and then disable them, and see what I get.
Pick an action (h for menu): lt e
...wait ~10 seconds...
Pick an action (h for menu): lt d
- We have received periodic triggers! Let's see if we got some events... Look at the status display again:
Pick an action (h for menu): st
*****AMC13 Status*****
Status display detail level: 1
Control 0: 09000003
DAQLSC Link Down
DAQLSC Almost Full
Control 1: 00200185
TTS out is TTC signal out
Create fake event at L1A
Generate Internal L1A
Run Mode
Control 2: 00000000 (All bits read 0x0)
AMC Link Status: 00000fff
AMC Enabled Inputs: 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11
--No AMC links locked--
AMC Port Status: 0b6f0000
--All AMC Link Versions Correct--
Unsynced AMC Ports: 00, 01, 02, 03, 05, 06, 08, 09, 11
AMC Bc0 Status: 00000018
--No BC0s locked--
Local Trigger Control: 000000ff
Periodic L1A every 0x100 orbit at BX = 500
0x1 trigger per burst
EVB Counters:
SDRAM Word Ct [000d]: 0000183e
Unread SDRAM Evts [000e]: 000001a4
L1A Ctr [0046]: 00000000 000001a4
Run time [0048]: 00000000 530e1192
Ready time [004a]: 00000000 530e7494
Busy time [004c]: 00000000 00000001
L1A ovfl warn time [0050]: 00000000 00000001
Tot evs monitored [0056]: 00000000 000001a4
AMC Counters:
<---Link 00-----> <---Link 01-----> <---Link 02-----> <---Link 03-----> <---Link 04-----> <---Link 05----->
Total Words [0040]: 00000000 00069d20 00000000 00069d20 00000000 00069d20 00000000 00069d20 00000000 00069d20 00000000 00069d20
Resend [004a]: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 000001e0 00000000 00000000
Received Evts [0052]: 00000000 000001a4 00000000 000001a4 00000000 000001a4 00000000 000001a4 00000000 000001a4 00000000 000001a4
Read Evts [0054]: 00000000 000001a4 00000000 000001a4 00000000 000001a4 00000000 000001a4 00000000 000001a4 00000000 000001a4
<---Link 06-----> <---Link 07-----> <---Link 08-----> <---Link 09-----> <---Link 10-----> <---Link 11----->
Total Words [0040]: 00000000 00069d20 00000000 00069d20 00000000 00069d20 00000000 00069d20 00000000 00069d20 00000000 00069d20
Resend [004a]: 00000000 00000000 00000000 000001e0 00000000 00000000 00000000 00000000 00000000 000001e0 00000000 00000000
Received Evts [0052]: 00000000 000001a4 00000000 000001a4 00000000 000001a4 00000000 000001a4 00000000 000001a4 00000000 000001a4
Read Evts [0054]: 00000000 000001a4 00000000 000001a4 00000000 000001a4 00000000 000001a4 00000000 000001a4 00000000 000001a4
As you can see, we have taken 0x1a4 events! Things to notice (to make sure everything is working as expected) are that the L1A counter matches the 'Received Events' and 'Read Events' for each AMC Link. Also, you should have 'Unread SDRAM Evts' which have been built while we were receiving triggers. These are in memory and ready for readout!
- Congratulations! You have taken your first successful run!
- There are more common procedures (such as enabling your AMC13 to take data from the mCTR2s instead of internally generated fake data, reading data from the SDRAM, and sending different kinds of tiggers) on the AMC13ToolRecipes link on the main page.
- For a more comprehensive look at the commands, please visit the AMC13Tool link on the main page.
--
CharlieHill - 07 Dec 2012