Guppi Developer's Guide
Command Line "Primitives"
The GUPPI command line has 4 basic operations:
get,
set,
unload, and
load.
get
The
get command has two functions:
- retrieves the value(s) of specified parameter(s)
- if no parameters are specified retrieves a list of known parameters
- this list will be based on what parameters the running profiles on the BEE2 or IBOB contain
- if nothing is running, no parameters will appear as available on the BEE2 or IBOB
Example (the example register and profile names do not represent anything existent in the real system):
guppi> get()
['BEE2/FPGA2/example_register', 'DAQ/another_param']
guppi> get('BEE2/FPGA2/example_register')
'5'
guppi>
set
The
set command sets the value(s) of the specified parameter(s).
Example:
guppi> get()
['BEE2/FPGA2/example_register', 'DAQ/another_param']
guppi> get('BEE2/FPGA2/example_register')
'5'
guppi> set('BEE2/FPGA2/example_register', '6')
'True'
guppi> get('BEE2/FPGA2/example_register')
'6'
unload
The
unload command has two functions:
- unloads a running profile (bof on the BEE2)
- if no profiles are specified retrieves a list of known bofs that are available to be unloaded
Example:
guppi> unload()
['BEE2/example_bof_for_fpga1.bof', 'BEE2/example_bof_for_fpga2.bof', 'BEE2/example_bof_for_fpga3.bof']
guppi> unload('BEE2/example_bof_for_fpga2.bof')
'True'
guppi> unload()
['BEE2/example_bof_for_fpga1.bof', 'BEE2/example_bof_for_fpga3.bof']
Additional note: the unload command uses partial string matching to uniquely identify bofs. So it is not strictly necessary to use the full bof name, only enough to (uniquely!) identify it. Thus something like the following should work:
guppi> unload('fpga2')
because the Xilinx/CASPER toolflow always adds an appropriate tag in the bof name for FPGA-specific designs. Other tricks include this one to unload all currently running the bofs:
guppi> unload(unload())
The inner
unload() returns the list of running bofs, which are in turn passed as arguments to the outer call.
load
The
load command has two functions:
- loads a profile (bof file on the BEE2)
- if no profiles are specified retrieves a list of known bofs that are available to be loaded
The first operation is fairly straightforward:
guppi> load()
['BEE2/example_bof_for_fpga1.bof', 'BEE2/example_bof_for_fpga2.bof', 'BEE2/other_bof_for_fpga2.bof', 'BEE2/example_bof_for_fpga3.bof']
guppi> load('BEE2/example_bof_for_fpga2.bof')
'True'
guppi>
If you loaded a profile onto FPGA2 as in the example above, no profiles for FPGA2 would appear in the list returned by
load().
guppi> load('BEE2/example_for_fpga2.bof')
'True'
guppi> load()
['BEE2/example_bof_for_fpga1.bof', 'BEE2/example_bof_for_fpga3.bof']
guppi> unload('BEE2/example_bof_for_fpga2.bof')
'True'
guppi> load()
['BEE2/example_bof_for_fpga1.bof', 'BEE2/example_bof_for_fpga2.bof', 'BEE2/other_bof_for_fpga2.bof', 'BEE2/example_bof_for_fpga3.bof']
Scripts
TBD