NOVAgen is our proprietary generation and development tools suite for building Cross-Assembler toolsets for virtually any DSP or microcontroller. What it does is taking an input specification of the assembly language syntax, mnemonics and associated opcode sequences, and builds all components that are necessary for a full-featured assembler, automatically. These can be compiled and then linked to the supplied modules to produce an executable Assembler on any given host platform, of production quality.
The input specification language was designed with flexibility and ease-of-use in mind, requiring no special skills or training. It supports any architecture, from 4 bit to 64 bit, and is widely programmable to support any instruction-set, syntax and opcode format (including little/big endian, or mixed encoding).
The NOVAgen technology does support a number of powerful optimizations that are extremely important for microcontrollers and DSPs:
- Instruction scheduling
- where the order of instructions can be changed in order to minimize pipeline delays.
- Instruction Parallelization
- where instruction sequences are replaced by their parallelized counterparts.
- Jump optimization
- where the shortest possible coding scheme is selected based on the address range.
- Peephole optimization
- where instruction sequences are identified that are to be replaced by shorter ones.
The language and the automatic generation process have been very successfully used in combination with instruction-set databases. In this case, the instruction-set is derived either from a hardware design model, or from a specification document, and can directly be used to generate input description files for the NOVAgen generation suite.
As the diagram below shows, the resulting assemblers process the input source code using multiple passes with full preprocessing capabilities, supporting a rich set of directives and controls, and a flexible Intermediate Object Store (IOS) output stage. This format independent output is transformed into the desired object file format using the Producer/Consumer concept as used also by our locator tools.

The suite itself performs a number of consistency and ambiguity checks on the user's input specification, producing high reliability assembler and dis-assembler modules almost instantly. This technology allows for fast responses to new processor designs, and also to achieve fast turn-around cycles for a prototype toolset during the design phase of a processor. It has sophisticated checking mechanisms built-in to eliminate the chance on hard to find logical errors that are easily made when using conventional development techniques.
This makes NOVAgen an ideal tool also for chip manufacturers, ASIC design houses and people using non-standard programmable devices. Anyone familiar with microcontroller assembly programming will find it intuitive and easy to use.


