HurricaneFactory: an attempt to create a comprehensive toolchain for softradio
by Karl-Max Wagner & Ikuo Oka
1 Instead of a preface: the woes of today's softradio designer
1.1 Why doesn't the softradio field really take off ?
1.1.1 Is it the Hardware side ?
Today we have:
DSP's in the GFLOP range
- pipelined A/D's in the multiple hundreds of megasample range
- D/A's in the multiple hundreds of megasample range - often with built in digital
Feature: softradio hardware may stay much the same over a wide range of applications.
``The software is the radio''
1.1.2 ....or the software side ?
Today we have:
Hardware design these days is done using complex functional units ( IC's ),
often made for specific fields of application. Software design is done from
the ground up, without the help of powerful functional units.
- some libraries ( limited scope )
1.1.3 Requirements for today's softradio designer
Such a person must be:
in other words: a communications ubergeek.
a seasoned rf / microwave expert
- an expert in advanced programming techniques with particular emphasis on ultra
efficient programming techniques
- an expert in communications systems design
1.2 What would help make things better ?
1.2.1 How does a conventional radio designer work ?
Design of circuits implies:
inherent paralell thinking
- thinking in schematics and block diagrams
- the way of thinking of a programmer is alien
1.2.2 A toolchain - what should it do ?
accompany a design from the high level system concept to actual hardware implementation
- convenient design entry ( block diagram, intuitive programming language )
- test against a simulated environment to assess quality
- possibility to generate target code for standard test hardware
2 The Design of HurricaneFactory
2.1 Overall design
Explain block diagram
- OpenSource, license GNU/GPL, LGPL for backend libraries, platform GNU/Linux
2.2 The Frontend
Entry using a standard circuit drawing program with netlist output ( xcircuit
- Drawing elements correspond to library elements
- Netlist is parsed by a netlist parser
- Additional information is asked using a popup menu if necessary
- Data asked may be for the overall design, for subunits or for each block
- Popup system must analyze required data and determine how ( if possible ) to
bundle user requests - this must be done in cooperation with netlist parser
- Data set is generated and forwarded to program synthesizer to generate a program
using the function library
2.3 The simulation system
2.4 The Frontend and Simulation System Libraries
Libraries contain programs in a mathematical language system to make it easy
to extend them by people who are not experienced programmers
- Language candidates are Scilab, octave, Rlab and Euler
- Attempt to make it possible to support several languages
- Frontend libraries consist of the functions and data sets representing them
towards the user interface.
Library function code performs the program function
- UI data set consists - in the case of a frontend library - function - of a block
symbol and all the data needed from the user to completely specify the function
2.5 The Backend
Explain flow chart
- UI entry for hardware specifics previously not needed
- Library element paralellization for one processor optimization and for balancing
with multiple processors
2.5.1 Prerequisite definition
2.5.2 Dynamic code, static code, data sets on hold
Explain the different functional classes
- patterns reside in external memory, are loaded to internal memory when needed
- input signal is a constant set during calculation
2.5.3 Code synthesis
Explain flow chart
- most DSP system have little internal and much external memory - internal memory
is faster, data exchanges between internal and external memory are done transparently
by hidden DMA, data must be in internal memory when needed - so loading must
be done early enough - data not used any more should be swapped out as soon
- Due to multiple - albeit interdependent and only limitedly independent internal
function units of DSP's instructions may be executed in paralell. Show with
32C40 block diagram
memory management: how to distribute data into internal and external memory,
when to load data from external memory into internal memory, when to save data
from internal memory into external memory. Static data sets must be taken into
account at this point. Paralellization of functions may fail due to incompatible
internal memory requirements.
- Code is synthesized with static tables incorporated. Core program is generated
to sequence all the code parts and to sequence memory management operations
- sort of primitive OS.
- Explain difference between OS and preplanned functionality interpreter vs. compiler.
2.5.4 Backend library system and hardware data base
defines all needed hardware properties
- may be completely defined in data base
- if only partially or not defined at all, ask all required data using UI dialog
made up of function sets for each supported architecture
I/O independent functions
- I/O functions
- I/O functions with specific hardware support - if softradio box has interface
hardware, support is transparently integrated in these functions
2.5.5 Library function design
Function templates are array width independent, are expanded to required array
width on demand
- if internal memory requirements of function templates are low, they are monolithic
- if internal memory requirements of function templates exceed available internal
memory, they exist in multiple chunks to be loaded and processed sequentially
- Chunked function templates can either be fractioned automatically on demand,
or exist in multiple versions with different chunk sizes
3 System development questions
3.1 The frontend / backend library relationship
frontend function developed by an interested user who needs it
- in order to use it on target hardware a functionally equivalent backend function
must exist - explain what functionally equivalent means
- this function should be available for all supported architectures
- as new architectures get supported, all available frontend library functions
must be made available for the new backend architecture
- Let's call this process ``library synchronization''
3.2 The library synchronization development cycle
- Writing function includes decisions on chunking and generating the profiling
- C not good for frontend, not good for backend. Explain why.
the gist of it: backend function is compared to frontend function, both must
Design must allow participation without unnecessary skills
- Framework must be simple, clear, powerful and unrestraining in the future
- target simulator is essential - CGEN ?
This document was translated from LATEX by
HEVEA and some homemade shell scripts.