Software Verification

Radar Simulator

usage: steamed_sham.py experiment_module runtime_mode scheduling_mode [-h] [--embargo] [--rawacf-format {hdf5,dmap}] [--realtime-off] [--kwargs ...]

Positional Arguments

experiment_module

The name of the module in the experiments directory that contains your experiment class, e.g. normalscan

runtime_mode

Possible choices: release, debug, pyprof, rawrf, engdebug

Runtime mode.

release: runs Python modules with -O -u for faster performance, generates antennas_iq and rawacf files. debug: runs usrp_driver module with gdb, limits performance to at most one pulse sequence per second. pyprof: runs Python modules with profiler and usrp_driver module with gdb. rawrf: generates rawrf data only, limits performance to at most one pulse sequence per second. engdebug: runs usrp_driver module with gdb, limits performance to at most one pulse sequence per second, and generates rawrf, intermediate filter stage, and antennas_iq data.

scheduling_mode

Possible choices: common, discretionary, special

The type of scheduling time for this experiment run.

Named Arguments

--embargo

Embargo the file (makes the CPID negative)

Default: False

--rawacf-format

Possible choices: hdf5, dmap

Format to use when writing rawacf files. Defaults to config file specification.

--realtime-off

Disable the realtime FITACF3 data server module

Default: False

--kwargs

Keyword arguments for the experiment. Each must be formatted as kw=val

Default: ''

The most comprehensive test of a custom experiment is to run the radar with it. Without a lab setup, this can be costly in terms of radar time. As such, a simulator script tests/simulators/steamed_sham.py has been created to run the radar software without USRPs, utilizing a USRP driver simulator script tests/simulators/driver_sim.py.

Running the script will open up the typical radar screens, with the USRP driver window replaced by the driver_sim process. Since there are no USRPs to configure, the radar begins operating much more quickly. All other radar modules (e.g. radar_control, data_write, etc) are running the exact code that normally operates the radar, thus providing a comprehensive test of the experiment functionality. Note that driver_sim.py generates noise for the RX channels, so the actual data written to file and served by the realtime process is nonsensical. However, all metadata fields should be accurate, and thus can be inspected to verify the experiment ran as expected.

Scheduler

Usage:

python3 tests/scheduler/test_scheduler.py

Verifies correct operation of the scheduling functions and classes.

Filter Scheme

A Jupyter notebook is located at tests/dsp_testing/filters.ipynb. This notebook describes in detail the default DecimationScheme used by Borealis, the helper functions in decimation_scheme.py for creating a digital filter, and creates an alternative filter with comparison to the default. This notebook also benchmarks the performance of the filter schemes on the GPU, both in runtime and in memory usage. Finally, the ramp-up and ramp-down of transmitted pulses is looked at, for characterization of the expected transmission spectrum.

This notebook is intended to make it easy to design and prototype new filtering schemes, which is useful for experiments which, for example:

  • Have a non-standard pulse length (the default is 300 microseconds)

  • Use range gates of differing size (the default is 45 km)

  • Use pulse compression (this increases the transmission bandwidth)

  • Are listening experiments (e.g. to measure the frequency spectrum)

  • Use a different receiver bandwidth (i.e. not the default 5 MHz)

In any of these circumstances, it is important to design a filter which works for the situation at hand.

Config File

Usage:

config_testing.py [-h] [configs ...]

positional arguments:
  configs     List of config files to check. If none specified, will run unit
              tests.

options:
  -h, --help  show this help message and exit

A Python unittest script for verifying config files is located at tests/config_files/config_testing.py. Note that this script only verifies that the config file is valid, and makes no guarantees about the compatibility of the config file with custom experiment classes (e.g. running with less than 16 TX antennas is not supported for the full_fov experiment).

Realtime Data Simulator

Usage:

python3 tests/simulators/realtime/realtime_sim.py

A simulator script is available at tests/simulators/realtime/realtime_sim.py. This script calls the realtime_server() function of the realtime module, and tests sending a rawacf record to it repeatedly. The script logs each record that it sends, and each fitacf response that it receives.