HomeProjectsPeoplePublicatons
Search:
   
 

MATLAB to RTL Synthesis

Progress Report

November 16th, 1998

Rhett Davis (wrdavis@eecs.berkeley.edu)



Two weeks ago, a proposal was submitted which outlined a proposal to take a "pilot correlator" from a MATLAB description to C code and to an RTL description using the SCENIC system being developed at Synopsys.  The original plan was to have a finalized input description and assembled the necessary tools by Nov. 16th.  This report details the progress I have made, first in the area of tools and secondly the input description.

Tools

A Beta version of MATLAB 5.3 has been installed, along with SIMULINK, STATEFLOW, and the Real Time Workshop.  C code has been generated successfully from SIMULINK descriptions using the Real Time Workshop.  The MATCOM V4 compiler has also been installed and C code has been generated successfully from MATLAB ".m" files.  Header files and C libraries for SCENIC simulation have been promised by Abhijit Ghosh at Synopsys, but not yet delivered and installed.  This is mostly due to the fact that I haven't taken the time to arrange the transfer.  The RTL synthesis tools for SCENIC are not yet available, even in Beta version, but Mr. Ghosh has offered to synthesize code developed here so that we may get an idea of how write synthesizable code for SCENIC.  Unfortunately, it appears that the final goal of this project may have to be SCENIC code instead of an RTL description, due the unavailability of the synthesis tools.

Input Description

Most of the time spent on this project has been in the development of an input description for the flow.  Several days were spent trying to understand the subtleties of the pilot correlator in order to decide what to include in the input description.  Descriptions have been reviewed in the form of MATLAB source code, C source code, SIMULINK models, RTL schematics of an implementation, and generic block diagrams.  Unfortunately, the MATLAB, C, and SIMULINK code are all in a sense "hacks" to model what the designer originally conceived as an RTL level description and thus contain many intricacies which we don't really want to synthesize and aren't part of the original goals of this project.  Thus, the input description is not yet finalized, but the following is know about its format:
  • Contains several basic blocks: multipliers, accumulators, adders, shifters, and small random access memory elements
  • Operates at multiple rates: 1, 1/16, 1/256 (normalized to the fastest blocks)
  • Includes a data path with a certain amount of control logic to handle special cases
 Two approaches have been taken in the past by designers of the this pilot correlator.  In one case, designers have written VHDL which contains synthesizable code for the control and behavioral models of the data path which had to be translated by hand.  The other approach was to create data paths in SIMULINK which could be synthesized, and behavioral models of the control logic which had to be hand translated into VHDL for synthesis.  The hope for this project was that we could somehow specify and debug the two simultaneously, and it still appears that the new STATEFLOW tool (part of SIMULINK) will allow specification of the control along side the data path.

The other problem is that SCENIC appears to be geared towards synthesis of control logic, not data paths.  As it stands right now, we have an input description for a data path with no way to synthesize it, and a way to synthesize control logic with no good input description.  I have been talking recently with James Lundblad who has been working with Sanders on a project to synthesize hardware from synchronous data flow descriptions.  I hope to come up with a good approach to the first problem with his help.  The second I hope to solve through further exploration of STATEFLOW's capabilities.