Skip to content

slaclab/lcls2-timing-patterns

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Repository for TPG timing pattern data.  Includes tools for simulating, validating, and programming timing patterns.

patterns: Directory of available patterns.  Includes

  description.txt           - textual description of pattern
  			    - it might be sufficient to just list the generating python functions 
			      and input parameters
  allow_d[0-13]_[0-13].py   - allow sequence python per destination
  allow_d[0-13]_[0-13].json - dictionary of description, encoding, and maxQ for each beam class
  			    - The maxQ array is used for re-classifying an allow sequence when
			      the bunch charge is changed.  In practice, this simply means
			      changing the beam class value associated with the sequence in 
			      the allow table.
  d[0-13].py                - destination beam requests python
  d[0-13].json              - dictionary of description, encoding, and title
  c[0-17].py                - control requests python
  c[0-17].json              - dictionary of description, encoding, and title
  ctrl.json                 - dictionary of control requests by bucket
  ctrl_stats.json           - statistics of { rate, first/last bucket, min/max spacing } per sequence bit
  dest.json                 - dictionary of beam requests by bucket per beam class combo
  dest_stats.json           - statistics of { rate, first/last bucket, min/max spacing } per beam class combo
  

pcdef.py - python dictionary of power class defining parameters

tools: python utilities for generation, simulation, execution, validation

  generation:

  simulation:
    individual:
      calculate statistics for validation { 1sec sum, min spacing, max spacing }

    pattern:
      read pattern directory and simulate across all inputs
      outputs are { beam requests, PC0[Allowed,Generated], PC1[], ... } per destination
        gets written to "pattern/validation.dat"
        plots for timeslot range, PC settings per destination
    visualization:
      inputs are { timeslot mode [AC/Fixed], timeslot range }

  execution:
    GUI tells HLA to execute pattern which includes entire subdirectory of sequences
    maps to facility modes (destn)
    given charge, determine PC of allow table sequences
      program allow table [ register array of sub-sequence start addr and pattern PC,
      	      	            indexed by MPS asserted PC ]
      requires min separation and max bunches within PC window for each allow sequence
      (from simulation)

  validation:
    other IOC executing on special node takes validation.dat and confirms for each
      destination when PC does not change
    errors can be trapped and archived
      { timestamp, pulseid, fixed/ac rates, beam request, mps status }

  scripts:
    patterngenerator.py --output <dir>
      Generates destination programming sequences for patterns described within
      a dictionary in patterngenerator.py.  Products are placed in <dir>/<pattern_name>/.

    patternprogrammer.py --pattern <pattern subdirectory> --pv <TPG PV base>
      Programs all sequences for the pattern and executes

    seqplot.py --start <bucket> --stop <bucket> <sequence.py>
      PyQt plot of (trigger bits vs) buckets populated

    seqprogram.py <sequence.py> <TPG sequence engine PV>
      Programs an individual sequence engine

    seqsim.py --pattern <pattern subdirectory> --start <bucket> --stop <bucket> --mode <CW/AC>
      Simulate 

    patternbrowser.py --path <dir>
      GUI for viewing statistics and display of destination, control by bucket
      for any setting of MPS beam classes

    patterntester.py --path <dir> --mps_port <port> ...
      GUI for programming a pattern into TPG and comparing live rates/sum with
      simulated pattern results for any setting of MPS beam classes.  Depends
      upon mpssim_tst to simulate MPS input (see below).

    patterntest_auto.py --path <dir> --mps_port <port> ...
      Command line utility to loop through all patterns and MPS class
      combinations for validating live rates/sums against simulated results.

Note that the last two scripts depend upon mpssim_tst running on the machine that hosts the TPG IOC;
e.g. cpu-b084-pm01 in the B84 teststand.  The mpssim_tst executable is part of the tpg package and should
be launched like so...

   ssh laci@cpu-b084-pm01
   /afs/slac/g/lcls/package/timing/tpg/R1.4.1/buildroot-2019.08-x86_64/bin/mpssim_tst -a 10.0.3.102 -p 2500 -v

In this case, the mps_port command-line parameters should use the value 2500.


The python code now depends upon a C library built with the 'make' command.  The 'make' command must be executed
prior to sourcing the env.sh script.  The build process is incompatible with the gcc version referenced by env.sh.

About

Timing pattern data for LCLS2 TPG

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages