SOFTWARE TOOLS: Auto-generating correct-by-construction C code for SoC designsBeach Solutions has just introduced a new tool, EASI Code, for managing a hardware design's many addressable registers and auto-generate SoC (System-on-Chip) design integration deliverables.
Target applications include the creation of IP or device setup routines (commonly referred to as a Programmer's Model), function libraries, power- management routines, interrupt service routines, and test and verification code.
Sophisticated SoCs now routinely contain thousands of programmable registers, creating low level firmware such as power-on/reset, or complex power management routines has become an extremely labor intensive and error prone task.
This problem is made more challenging in a parallel development environment in which firmware development has to start and proceed to meet deadlines while the register address map is still constantly being revised.
To resolve these challenges, EASI Code provides the embedded designer with a software sequence capture environment that draws upon the SoC design register database which can be constantly updated as changes are made elsewhere in the design flow.
The engineer describes the sequence of register related events with the EASI Code graphical capture tool using language neutral standard flow chart symbols. EASI Code then draws upon the latest register data stored in the database and auto-generates the code described.
Through the auto-generation of correct-by-construction code, the tool allows concurrent development, It also allows the automatic and seamless transfer of device operational information.
EASI Code contains six critical elements: an interactive register behavior capture environment; a data checker with built-in extensible rules; a register and memory C API (HAL) generator; a register sequence function C generator; a reference documentation HTML generator; and a graphical sequence builder
The graphical user interface describes how registers in an SoC design interact with each other by means of a canvas upon which standard flow-chart symbols are placed and connected to create machine readable descriptions of complex sequences.
These sequences are then used by generators within the tool suite to create correct-by-construction C-code. The use of hierarchical object presentation enables libraries of complex sequences to be rapidly created, encouraging standardization and reuse.
All register sequences are automatically checked. Syntax errors are fixed on entry and semantic errors are identified before delivery to provide a solid foundation for the generation of APIs and sequence code.
In addition to auto-generates "correct-by-construction" C code and driver Libraries, a programmer's reference document in HTML can also be auto-generated containing a textual description of each sequence with pseudo code, a flowchart diagram and a register access table. Additional output formats can be auto-generated using Advanced EASI Code.
EASI Tools require no new language support and fits neatly into existing design flows. Data is centralized in an XML database from which all hardware, software, verification and documentation deliverables are generated. All project team members then work from a common reference to deliver consistent design files throughout all phases of the development.
San Jose, Ca.