Waveforms are just waveforms, right? Well, in the world of software defined radio a waveform is more than just what meets the eye. In the recent SDR Forum, I learned that "Portable Waveforms" consist of more than just the signal. For the JTRS program, a portable waveform consists of
--Detailed design docs
--Test code and data sets
Guidelines are in place for how to create portable waveforms because as this paper points out
it's easier to rewrite code than to import a non-portable piece of code.
Part of the challenge in making a waveform portable is partitioning the waveform into real-time and non real-time components and then matching each component to a processor resource such as an FPGA, GPU, CPU, etc. Since hardware platforms vary widely, it's not reasonable to expect a waveform to run on any platform without some modification. Documentation including code, code hierarchy, multi thread uses, etc is required. Also, emulators and debuggers are necessary to work out how the waveform is generated and can be modified.
It's also interesting to note that IP cores specific to FPGA vendors should not be used as target platforms may not have those specific FPGA components. Clocking is another concern in that the use of multiple clocks to achieve some objective -- say lower power consumption -- may cause problems due to the target platform not having sufficient clocking resources.
Portability brings more design concerns and issues than originally meets the eye.