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

  1. 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.
  2. 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

  1. Before running the Tool, you will need to make sure that the environment is correctly set.
    • If you are using xDAQ software release, run the release's built-in environment script
            $ source ~daqowner/dist/etc/env.[c]sh
            
    • If you are using one of the non-xDAQ StandAlone software packages, change to the home directory of the package and run the environment script. For instance:
            $ cd amc13Standalone_RPM_2012_12_04
            $ source uhalEnv.[c]sh
            
    • NOTE: if you do not want to run these commands every time you open a new terminal, add them to your .bashrc file
  2. 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):
            
  3. 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
          
  1. As a test procedure, we will take periodic local events using internally generated fake data and the internal TTC signal.
    1. 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.
    2. 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): i 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
            
    NOTE
    The enable command in the first line ('i') is the same as ('en') these commands an be used interchangeably (e.g. 'en 0-11 f t L' works the same as the first line above).
    1. 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!).
    2. 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
            
    3. 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
            
    4. 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!
    5. Congratulations! You have taken your first successful run!
  2. 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.
  3. For a more comprehensive look at the commands, please visit the AMC13Tool link on the main page.

-- CharlieHill - 07 Dec 2012

Edit | Attach | Watch | Print version | History: r5 < r4 < r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r5 - 19 May 2014 - DavidZou
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2023 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback