ADK Cell Library-based Design From VHDL Synthesis

In this lab you will learn to create an Integrated Circuit layout from a behavioral VHDL description of the circuit.  Here are the steps:


1. Create a behavioral VHDL description of the chip1 design

    1.1 If not already there, move back to your tutorial directory, make a directory for lab7 then change directory into it.
      >> cd egre533
      >> mkdir lab7
      >> cd lab7
     
    1.2  Create a VHDL directory for your VHDL source and change directory into it.  (You will want to keep your source files in a separate directory to prevent accidentally overwriting them with the tools.)
      >> mkdir VHDL
      >> cd VHDL
     
    1.3  Open a new VHDL file called adder1.vhd and using your favorite text editor and enter the following VHDL description into the file:

       
    Note that the IEEE std_logic_1164 and std_logic_unsigned packages are used in this description. These packages are supported by the Leonardo Spectrum synthesis tool. For more details on the VHDL syntax supported for synthesis, see the Leonardo Spectrum HDL Synthesis Guide (/mentor/leonardo_spectrum_2004/doc/leospec_hdl.pdf).
     
    1.4  Change directory back into your lab7 directory and compile the VHDL file for simulation:
       
      >> cd ..
      >> vlib work
      >> vmap work ./work
      >> vcom VHDL/adder1.vhd
     
    You should see the following lines printed out with no errors:
    Model Technology ModelSim SE vcom 5.8d Compiler 2004.06 Jun 12 2004
    -- Loading package standard
    -- Loading package std_logic_1164
    -- Loading package numeric_std
    -- Compiling entity adder1
    -- Compiling architecture behavior of adder1

2. Simulate the VHDL model

3. Synthesize the VHDL models to ADK parts

    Leonardo Spectrum has two operating modes: Quick Setup and Advanced Setup.  Two buttons under the top menu bar select between the modes.  See the figure below.  The buttons are under the Edit menu item; the one with the red Q is the Quick Setup button while the one with the red A is the Advanced Setup button.

    3.3  Use the Tools->Variable Editor... item from the pull down menus to bring up the System Variables dialog box. Select the edifout_power_ground_style_is_net variable and set it to TRUE then left click Apply.  Use the same method to set:

    max_fanout_load to 14
    force_user_load_values to TRUE
    vhdl_write_component_package to FALSE
    vhdl_write_use_packages to library IEEE, adk; use IEEE.STD_LOGIC_1164.all; use adk.all;
    Hint: You can save the command file at this point and replay it for future sessions of Leonardo to automate setting these variables.  To save it select File->Save Command File... from the top menu bar and type in a filename ("leo_vhdl", for example) then click OK.  Next time you start Leonardo, choose File->Run Script from the top menu bar then navigate to this script.

    3.4  In the Quick Setup window set the Technologyto ASIC->Mentor Graphics->AMI 0.5u(typ).  Use the Open Files button to navigate to your VHDL directory then select the adder1.vhd file for input.  Your window should look like:

    3.5  Toggle to Advanced Setup mode.  In the Advanced Setup window left click on the Output tab.  Then select Verilog for the output Format as shown below.  Note Leonardo will automatically set Filename to adder1.v.  Leave the other values as the defaults.

    3.6  Go back to Quick Setup mode and left click the Run Flow button.  Lots of messages will scroll through the transcript window.  The final messages will be similar to those shown below for a successful synthesis.


     

4. Simulate the synthesized design in Verilog to be sure it functions correctly

After the VHDL model is synthesized into a gate level description, it is always a good idea to simulate the resulting design to ensure it functions correctly and the output matches the behavioral description. There are some legal, synthesizable VHDL constructs that, when synthesized, will not produce the same output as the functional description and synthesis tools have been know on rare occasions to produce incorrect results...

4.1  Map the compiled library of Verilog descriptions for the ADK parts into the proper location to compile the post-synthesis structural description (this library has been pre-compiled for you):

4.2  Compile the Verilog gate level (structural) description:
>> vlog adder1.v
4.3  Simulate the structural description of the adder using the precompiled gate library (command line below).  The simulator should run as before and you should see the appropriate output as before.  Note:  The gate level library does not include timing information so you will not see delays on your signals.  Also the result signal has been altered by synthesis.  This is OK.  Close ModelSim after verifying the gate level implementation.
>> vsim adder1 -L adk

5. Create a symbol and schematic for the synthesized part

    5.11  The final step in preparing for layout is to create the layout design viewpoint.  From the Unix command prompt enter:
     
      >> adk_dve adder1


    The schematic, symbol and part created use ADK ami05 library parts which have an associated layout.  You can now use IC Station to either perform schematic driven layout manually as you did in lab5 or fully automated palcement and routing as described in lab8.