EASI Code Product


Beach Solutions® EASI Code™ auto-generates correct-by-construction software for significant development and test savings. Automated capture, validation and generation tools for SoC register address maps and device operational information lead to right-first-time system integration and improved IP reuse.

Today’s SoCs typically contain thousands of software programmable registers and the low-level software API for a single register can consist of more than 50 different functions. The problem facing a development team is how to keep code up-to-date, and error-free, while the register address map evolves during development.

EASI Code provides a language-independent graphical application for managing the valid transactions between registers in your SoC. It can be used standalone as a flowchart capture and validation tool, or as part of EASI Tools to increase your chances of being Right First Time.

Upgrade to EASI Code Advanced for document auto-generation.

>> Read the EASI Code Leaflet

Key benefits Top

 

Advanced software development

EASI Code accelerates the system integration stage as the manual error-prone integration and software layer tasks are automated. Auto-generation of correct-by-construction ‘SystemC’ and ‘C’ code shortens the software development and test cycle, e.g. register models are available earlier.

Improved efficiency

Dynamic/setup data for memory-mapped objects are held formally in a central EASI Sequence XML database that is globally accessible. No specialized programming knowledge is required as the operational behavior is specified in a logical way. This focuses the process and the focus is on logic and intent rather than language constraints.

The transfer of project information is greatly improved leading to right-first-time designs and better IP reuse. Software integration and verification is simplified because the manual error-prone creation of register sequences in C is automated.

Major quality improvements

All register sequences are automatically checked and syntax and semantic errors identified before delivery to provide a solid foundation for the generation of APIs and test code.

Product description Top

A firmware developer uses EASI Code to auto-generate software for all of the registers and memories in a design. Operational setup or verification sequences are then described e.g. power-on-reset or initialization, and the associated deliverables are auto-generated for transfer within the project team.

Note: EASI Code has a pre-requisite of EASI SoC.

Auto-generate SystemC PV Model

SystemC offers an increase in productivity by further abstraction from an RTL description of the register block. However, there is little advantage in this approach if the SystemC view is yet another manually entered, parallel view of the same registers.

Using the centralized EASI Tools Suite database, EASI Code auto-generates the transaction-level programmer’s view (PV) model in ‘SystemC’ for all address mapped registers and memories for an entire design.

SystemC TLM target

Accelerate system development

The output of the new SystemC PV generator is a functionally accurate memory mapped register model. The auto-generated model would be used:

  • By software developers as an accurate and representative model of the memory mapped registers and memories in an IP block, or entire design e.g. for IP block device driver and API development.
  • By verification engineers within a testbench to functionally verify an IP block against an equivalent RTL (Register Transfer Level) implementation written in a hardware description language such as Verilog or VHDL.
  • By verification engineers to substitute equivalent parts of RTL with a SystemC representation during stages of development of large designs to improve simulation efficiency.

The auto-generated SystemC PV model comprises multiple layers; each layer providing a different way to drive the register and memory model:

  • Standard PV interface
    The files output by EASI Code provide the ability to drive the auto-generated register and memory model using SystemC via a standard PV TLM interface. This allows designs to be developed using a common abstract interface and then implemented using any bus architectures that adhere to this abstracted interface without the need for recoding.
  • Hardware MRB interface
    The register and memory model may be auto-generated with an MRB (Memory-mapped Register Block) wrapper and a bus interface component with a simple PVCI interface to enable the creation of a more rigorous test environment. A HDL wrapper allows the SystemC model to be used in a physical environment, e.g. instantiated in an HDL design as a foreign architecture.
    Requires EASI Core Power or EASI SoC Power to auto-generate the complete HDL description for the MRB
  • Direct software interface
    The auto-generated register and memory model can be driven directly using SystemC and/or C++ via software functions. An API is auto-generated comprising access functions to read and write to registers and bitfields and get/set functions monitor/modify values directly.

Auto-generate C API

Using the centralized EASI Tools Suite database, EASI Code auto-generates the physical layer API for all address mapped registers and memories in C for an entire design. This means the hardware and software interfaces remain consistent throughout project lifecycle.

Automate error-prone tasks

Auto-generate a comprehensive suite of all legal 8-bit, 16-bit, 32-bit and 64-bit access functions or macros required to access each IP interface in a system. Build libraries to deliver with your optimized or generic IP containing C code to read, write, get and check values from registers, bitfields, enumerations and memories.

In addition, supporting C files are auto-generated for the system:

  • Top-level system map file with base address definitions
  • Register, bitfield and memory literal definitions
  • Enumeration type definitions
  • Default macros for accessing memory and IO

Often when you are trying to debug application code it is useful to see when, where and how often level 1 access macros are being used (e.g. for code profiling or debug purposes). To help with this, each access macro/function generated by EASI Code is uniquely numbered and may contain a built-in debug macro that writes the function number to a magic address. In a simulation, this magic address could be a dummy peripheral IP block that converts each function number into a message output during the simulation. The IP block feeds back the output to a PC via an RS232 port etc. The PC could then capture and store the numbers in a file that could be post processed in order to yield a similar message log to that produced during simulation.

Dynamic behavior information capture

EASI Code offers a language-independent graphical data management tool for configuring and managing the operational software and verification sequences between registers in an SoC. The powerful combination of EASI Core and EASI Code allow you to describe both the static structure and the dynamic behavior of a device. Knowledge of addresses, pointers & masks is no longer required.

Key applications include:

  • Complete SoC initialization
  • IP setup routines and function libraries
  • Interrupt service routines
  • Test setups and routines
 
 

Visualization of operational flows

Hierarchical object presentation and an interactive flowchart graphic make it quick and easy to build sequences with drag & drop register access, e.g. to setup TX Mode or set baud rate and parity for a UART device.

Describe a library of sequences that are order dependent. A sequence may contain:

  • An argument passed into the sequence
  • Local variables that can be arrayed or a pointer
  • Memory map accesses (register/bitfield/enumeration)
  • Nested sequences with parameter & return values
  • Expression statements
  • While statements for iterations within a sequence
  • Conditional behavior using control statements - loops, if-then-else, case & switch
  • Sections of code in a target language
  • Global variables available to all sequences in a suite

Automatic sequence checker

EASI Code contains an automated and repetitive data checking process with many sequence rule checks. EASI Code detects data errors by applying sequence rules to the data in the sequence database. These can be applied at any time during data capture, even before the library of sequences is complete. The correctness of a library is determined by the outcome of applying a body of rules to the sequence data. For each rule, the process usually yields a pass or fail result, but may alternatively produce a warning or information message.

A simple graphical user interface presents the errors, warning and info messages from which you can double-click straight to the source of issue. These built-in rules check:

  • Syntax errors
  • Undefined mandatory fields
  • Duplication and existence of identifiers
  • Incorrect fields
  • Initialization of variables

To further improve productivity, syntax errors in expressions are visually decorated. EASI Code includes a Parser that checks the syntax of expression fields. When a character string is invalid, the graphical application displays a red line under the string and helpful hover text.

Auto-generate sequences in C

EASI Code auto-generates SoC register sequences in ‘C’ for address-mapped registers captured in a central database using the EASI Code sequence flowchart builder graphical application. The auto-generated C functions can be used to

  • Modify register/bitfields based on a condition
  • Set and modify register/bitfields in a particular sequence

Deliver a suite of register sequence function declarations and function code for a particular IP to your verification team.

 
 
Key features
Top

 
 
  EASI
Code
EASI Code
Advanced
SystemC PV model auto-generation    
A functionally accurate memory mapped register model in SystemC
IEEE 1666™ - 2005 standard for SystemC (OSCI) compliant
Generated with a standard PV TLM interface
Generated with a hardware memory mapped register block (MRB) interface and HDL wrapper
User-configurable bus component

Default AMBA AHB and APB bus logic templates supplied

Driven via a direct software interface using SystemC and/or C++ via software functions
Design-specific C++ classes representing IPBlock instances, Register instances and Memory instances
Multi-layered read and write register and memory access functions
Generic C++ class templates representing Bitfields, LocatedRegisters, Registers, LocatedMemories, Memories and Enables
Get/set functions to monitor/modify values directly
Instance-based generation where parameterized IP values are resolved
Non instance based generation where generic IP values are used

Support for external reset sources

Support for internal & external enables

Support for set / clear (sticky) bits & self clear bits

Support for clear on read bits

Generation of asynchronous or synchronous reset behavior

Support for single register with different read address and write address

C API code auto-generation    
8-bit, 16-bit, 32-bit and 64-bit access C function declarations
8-bit, 16-bit, 32-bit and 64-bit access C function source code
8-bit, 16-bit, 32-bit and 64-bit access C macros
API code for registers, bitfields, enumerations and memories
IP block literal definitions (address, offset & mask)
System address map definitions
Enumeration type definitions
Default access macros
Data type definitions
Debug macros to check status
Debug function name to number mappings
Instance-based generation where parameterized IP values are resolved
Non instance based generation where generic IP values are used
API is generated for all devices visible to a bus master
Sequence data management
 
 
Centralized system database based on a language neutral solution
Describe a library of sequences in a generic manner
Formal links to IP register database
Graphical flowchart builder    
Drag and drop objects to build a sequence graphically
Order-dependent interactions    
Control order and circumstances under which actions are performed with If, Switch and While statements
Parameters can be set when a sequence is called
A sequence can call other sequences
Read/writes can be performed to a register, bitfield or enumeration
Parameters, variables and return values defined as references
Local and global variables
Sections of inline code
Standard & user-defined complex data types
Automatic sequence checks    
>50 built-in sequence data rule checks
Double-click straight to source of errors
Sequence C auto-generation    

Generation of functions declarations for a complete Suite of sequences

Generation of function code for a complete Suite of sequences

Generation of pre-defined standard data types

Support for complex user-defined data types

Generation of read and write accesses to registers, bitfields and enumerations

Generation of If, While and Switch control statements

Generation of a function call for each sequence reference

Support for references (pointers) for variables / parameters / returns

Support for local and global variables

Support for user-defined inline code at both sequence and suite level

Fully commented code

Documentation auto-generation    
Auto-generated HTML sequence document  
Auto-generated HTML design document  
Auto-generated RTF design document  
Auto-generated PDF design document  
Auto-generated MIF design document  
Auto-generated HTML memory map document  
Auto-generated RTF memory map document  
Auto-generated PDF memory map document  
Operating system support    
Microsoft® Windows® 2000 / Microsoft® Windows XP®
Red Hat Enterprise Linux AS release 3
Sun Solaris Operating Environment 8
 


EASI Code Advanced Top

EASI Code Advanced includes the auto-generation of both printed and web-based documents leading to substantial productivity increases. These automatically generated documents can be updated at the push of a button and then used or distributed as document files or postings to an intranet web site before coding has even started. This simple yet powerful update mechanism ensures that all members of a development team are synchronized and using the latest information as they execute their part of the design.

EASI Developer Suite Top

EASI Developer Suite includes the Generator Configuration Kit used to modify each of the generators for rapid customization of the structure and content of an auto-generated view. This enables the generators to be customized to support proprietary verification and test flows and improves control over the usability and integration of EASI Tools and Generators within your flows.