Synthesizing for ASIC Using Leonardo Spectrum
Leonardo Spectrum is a suite of high level design tools for a Complex Programmable Logic Device (CPLD), Field Programmable Gate Array (FPGA), or Application Specific Integrated Circuit (ASIC). LeonardoSpectrum offers design capture, VHDL and Verilog entry, register-transfer-level debugging for logic synthesis, constraint-based optimization, timing analysis, encapsulated place-and-route, and schematic viewing.
We will use Leonardo to synthesize our design for ASIC. Leonardo will determine for us the best fit for our design. It will match our design to the libraries we choose and optimize the design for area or timing as we choose.
There are two Leonardo interfaces; the GUI and the command line interface. The GUI version is user friendly; however the command line interface is more powerful. Both interfaces will be discussed in this tutorial.
Leonardo Spectrum Graphical User Interface
1.
Invoking Leonardo From HDS Designer
2.
Setting Up The Synthesis Wizard
1.
Invoking Leonardo from HDS Designer
Enter HDS Designer. For information on entering HDS Designer see the HDS Designer Tutorial.
From the HDS Designer, Design Explorer window. Click on our design XNOR2 so that it is highlighted.
Note: If
you are in the project manager screen double click the TUTORIAL_lib library. Our
design XNOR2 is a member of TUTORIAL_lib.
From the right hand “task” window select the “+” symbol next to Leonardo Spectrum. This should open up two more Leonardo options. As shown below.

Double click “Leonardo spectrum prepare data.”
Select
AMI .5u slow

The following window should appear.

Once this is completed, double click “Leonardo Spectrum Synthesis Invoke.” Click “ok” to select LeonardoSpectrum Level 3.

Leonardo
will attempt to read in the design but will fail saying “No technology libraries have been loaded yet.” Ignore this error.

2. Setting Up
The Synthesis Wizard
Click on the Wizard’s hat icon. This will start the Synthesis Wizard and allow us more control over synthesis options.

Select
ASIC ->

In the encoding menu click on “gray”. This will set the state machine encoding to gray code. We do not have any state machines in our simple system, but for future reference all state machines will be encoded in this manner. Click “next.” Click “next” again to skip the next page. The next page should appear as follows.

Set the output file format to EDIF to create an EDIF netlist file. Next change the file location. I usually choose the “hdl” directory of my project. You can change the name of the file or leave it as is. Click on “Finish.” The code should now be read in and optimized. The message “finished synthesis run” should now be displayed.

You may now exit Leonardo Spectrum.
Continue to Creating a Schematic using the Edif2Eddm Command
Leonardo Spectrum Command Line Interface
1.
Setting the Working Directory
2.
Creating a Leonardo Command File
3.
Executing a Leonardo Command File
1.
Setting the Working Directory
From the UNIX terminal, navigate to the
directory where you wish to work from. I
choose the following location for convenience.
/hds_projects/TUTORIAL/TUTORIAL_lib/hdl
Set this as the working directory using the “swd” command.
The next step is to create a Leonardo Spectrum .do file. This file can be created with any text editor, but here I will describe how to make the file using the Solaris File Manager.
2. Creating a Leonardo Command File
Type the command “filemgr” into the command prompt to bring up the file manager.
Note: The file manager should come up in the working directory. See figure below.

To create a new document right click on
File
-> Create Document
Rename this new file an appropriate name such
as “xnor2.do.”
Double click this file to open the Solaris text editor.
Enter the text as shown below.

Here is a brief description of each command, as taken from the Leonardo Command Reference.
set
encoding gray
This Leonardo command sets the state machine encoding scheme to gray code. This changes the default setting of one hot.
Set
vhdl_write_component_package FALSE
Write components in package instead of in line with architecture if TRUE.
Set
vhdl_write_use_packages
Define which packages to include for each entity.
Load_Library
ami05_typ
This load_library command reads a compiled technology library file, and then creates a
library in the LeonardoSpectrum design database. The name of the created
library is derived from technology_library_name. If technology_library_name is
not a simple name, the Load_library
command uses just the base of
the name to derive a new name.
Analyze
Read an hdl file into an hdl library without any elaboration.
Elaborate
Elaborates analyzed hdl design units creating a design(s).
Ungroup
Flatten out hierarchy.
Optimize
Optimize and map a design to a target technology. In this case the target technology is ami_05.
Report_Area
Report the accumulated area of the present design.
Report_delay
Report timing information about the design.
Report_Constraints
List user constraints on any object.
Auto_write
Automatically does needed processing for your target technology in addition to the write command,
including setting of variable values and calling generate_timespec, decompose_luts and
apply_rename_rules, where applicable. Note: Refer also to decompose_luts and unmap in
the Commands chapter.
3. Executing a Leonardo Command File
Exit the file manager and return to the terminal shell.
From the same working directory enter the command
Spectrum
–file [script name]
Where script name is whatever you named the script i.e. “xnor2.do”

The script should run successfully and return to the command prompt.
If you notice errors in the shell window, adjust your .do file and try again.
Click Here to Creating a Schematic Using edif2eddm