vhdl 6 synthesis with vhdl leonardo

Upload: udayrajmp

Post on 10-Apr-2018

271 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    1/42

    Automated Synthesis from

    HDL modelsLeonardo (Mentor Graphics), Design Compiler (Synopsys)

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    2/42

    ASIC Design Flow

    BehavioralModel

    VHDL/Verilog

    Gate-Level

    Netlist

    Transistor-LevelNetlist

    PhysicalLayout

    Map/Place/Route

    DFT/BIST& ATPG

    VerifyFunction

    Verify

    Function

    Verify Function& Timing

    VerifyTiming

    DRC & LVSVerification

    IC Mask Data/FPGA Configuration File

    Standard Cell IC& FPGA/CPLD

    Synthesis

    Test vectors Full-custom IC

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    3/42

    Automated synthesis

    Leonardo Spectrum,Synopsys Design Compiler

    HDL Behavioral/RTL Models

    FPGA

    ASIC

    TechnologySynthesisLibraries

    Technology-SpecificNetlist

    DesignConstraints

    VHDL, Verilog, SDF,EDIF, XNF

    Leonardo:Level 1FPGALevel 2FPGA + TimingLevel 3FPGA + ASIC

    or ASIC only

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    4/42

    Leonardo ASIC synthesis flow

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    5/42

    Synthesis design flow

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    6/42

    Leonardo synthesis procedure

    1. Invoke leonardo2. Select & load a technology library (ASIC or FPGA)

    ASIC > ADK > TSMC 0.35 micron

    3. Read input VHDL/Verilog file(s): count4.vhd

    4. Enter any constraints (clock freq, delays, etc.)5. Optimize for area/delay/effort level

    6. Write output file(s) count4_0.vhd - VHDL netlist

    count4.v -Verilog netlist(for IC layout)

    count4.sdf - Standard delay format file (for timing)

    count4.edf - EDIF netlist(for Xilinx/Altera FPGA)

    http://../nelsovp/Desktop/Mentor%20Presentation/count4_vhd.pdfhttp://../nelsovp/Desktop/Mentor%20Presentation/count4_0.vhdhttp://../nelsovp/Desktop/Mentor%20Presentation/count4.vhttp://../nelsovp/Desktop/Mentor%20Presentation/count4.sdfhttp://../nelsovp/Desktop/Mentor%20Presentation/count4.edfhttp://../nelsovp/Desktop/Mentor%20Presentation/count4.edfhttp://../nelsovp/Desktop/Mentor%20Presentation/count4.edfhttp://../nelsovp/Desktop/Mentor%20Presentation/count4.sdfhttp://../nelsovp/Desktop/Mentor%20Presentation/count4.sdfhttp://../nelsovp/Desktop/Mentor%20Presentation/count4.vhttp://../nelsovp/Desktop/Mentor%20Presentation/count4_0.vhdhttp://../nelsovp/Desktop/Mentor%20Presentation/count4_vhd.pdf
  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    7/42

    Synthesis example

    Load technology library:tsmc035 (ASIC), or Xilinx Spartan2 (FPGA)

    Load design file: modulo7.vhd

    Specify constraints: clock freq, delays, etc.

    Optimization: effort, performance vs. area

    Write synthesized netlist output(s):

    modulo7_0.vhd : VHDL netlist for ModelSim & DFT

    modulo7.v : Verilog netlist for import into DA-IC

    modulo7.sdf: For ModelSim to study timing

    modulo7.edf: EDIF netlist for 3rd party tools

    modulo7.xnf: Xilinx netlist for Xilinx ISE

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    8/42

    Behavioral model to be synthesized-- modulo-7 counter with asynchronous reset and synchronous load/count

    library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all;entity modulo7 isport( count, load, reset, clk: in std_logic;

    I: in unsigned(2 downto 0); -- unsigned form ofstd_logic_vector

    Q: out unsigned(2 downto 0)); -- defined in IEEE numeric_std package

    end modulo7;

    architecture Behave of modulo7 is

    signal Q_s: unsigned(2 downto 0);

    begin

    process (reset,clk) begin

    if (reset='0') then Q_s

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    9/42

    Synthesized netlist (1)-- Definition of modulo7

    -- Thu Sep 21 10:48:09 2006-- LeonardoSpectrum Level 3, 2005a.82

    --

    library IEEE;

    use IEEE.STD_LOGIC_1164.all;

    entity modulo7 is

    port (

    count : IN std_logic ;

    load : IN std_logic ;

    reset : IN std_logic ;

    clk : IN std_logic ;

    I : IN std_logic_vector (2 DOWNTO 0) ;

    Q : OUT std_logic_vector (2 DOWNTO 0)) ;

    end modulo7 ;

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    10/42

    Synthesized netlist (2)

    architecture Behave of modulo7 issignal Q_2_EXMPLR, Q_1_EXMPLR, Q_0_EXMPLR, NOT_reset, nx4, nx14, nx22,

    nx48, nx60, nx169, nx179, nx189, nx202, nx204, nx208, nx212, nx214,nx218, nx225, nx228, nx230: std_logic ;

    beginQ(2) Q_0_EXMPLR, S0=>nx225);ix15 : oai22 port map ( Y=>nx14, A0=>Q_0_EXMPLR, A1=>nx202, B0=>nx230,

    B1=>count);ix203 : nand02 port map ( Y=>nx202, A0=>count, A1=>nx204);ix205 : nand04 port map ( Y=>nx204, A0=>count, A1=>Q_2_EXMPLR,

    A2=>Q_1_EXMPLR, A3=>nx228);ix180 : oai32 port map ( Y=>nx179, A0=>nx208, A1=>count, A2=>load,B0=>nx212, B1=>nx225);

    Q_2_EXMPLR_EXMPLR : dffr port map ( Q=>Q_2_EXMPLR, QB=>nx208, D=>nx179,CLK=>clk, R=>NOT_reset);

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    11/42

    Synthesized netlist (3)

    ix211 : inv01 port map ( Y=>NOT_reset, A=>reset);ix213 : aoi22 port map ( Y=>nx212, A0=>I(2), A1=>nx214, B0=>nx22, B1=>nx4 );ix216 : inv01 port map ( Y=>nx214, A=>count);ix219 : nand02 port map ( Y=>nx218, A0=>Q_1_EXMPLR, A1=>Q_0_EXMPLR);Q_1_EXMPLR_EXMPLR : dffr port map ( Q=>Q_1_EXMPLR, QB=>OPEN, D=>nx189,

    CLK=>clk, R=>NOT_reset);

    ix190 : mux21_ni port map ( Y=>nx189, A0=>nx60, A1=>Q_1_EXMPLR, S0=>nx225);ix61 : ao32 port map ( Y=>nx60, A0=>nx48, A1=>nx218, A2=>nx4, B0=>I(1),

    B1=>nx214);ix49 : or02 port map ( Y=>nx48, A0=>Q_0_EXMPLR, A1=>Q_1_EXMPLR);ix226 : nor02_2x port map ( Y=>nx225, A0=>count, A1=>load);Q_0_EXMPLR_EXMPLR : dffr port map ( Q=>Q_0_EXMPLR, QB=>nx228, D=>nx169,

    CLK=>clk, R=>NOT_reset);ix231 : inv01 port map ( Y=>nx230, A=>I(0));ix5 : inv01 port map ( Y=>nx4, A=>nx202);ix23 : xor2 port map ( Y=>nx22, A0=>nx208, A1=>nx218);

    end Behave ;

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    12/42

    Synthesis steps

    1. Load technology library into database2. Read HDL models into database

    3. Get design constraints (timing, area)

    4. Analyze design

    5. Elaborate design

    6. Compile/optimize design

    Repeat as necessary to meet constraints

    7. Generate technology-specific netlist(s)8. Generate simulation timing data (SDF file)

    9. Generate reports (cells, area, timing)

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    13/42

    LeonardoMainWindow

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    14/42

    LeonardoQuick Setup Tab

    Technology

    HDL Files

    Target Clock Freq

    Optimization Effort

    Output File

    CommandWindow

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    15/42

    Leonardo commands/scripts

    Enter commands at the command prompt, or read froma Tcl script file.

    A variable specifies a global constraint, directive, etc.

    Tcl set and unset commands change variables

    set voltage 3.3 An attribute is information attached to an object

    (owner of the attribute) in the memory design database.

    Allows user to fine-tune the process at the object level.

    Set with Tcl set_attribute command (also unset_attribute) An attribute has: owner, name, value

    Example:

    set_attributenet n1name max_fanout_loadvalue 10

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    16/42

    Technology library (ASIC)

    Load synthesis library for target technology into memory Command example: load_library tsmc025_typ

    Searches for $EXEMPLAR/lib/tsmc025_typ.syn

    Technology variables affecting delay calculations (delay

    derating factors) Use tech library defaults if variables not set

    set voltage 2.5 (volts)

    set temp 40 (degrees celcius/centigrade)

    set process 1 (process variation #if available)

    set max_fanout_load 5

    Global limit on max inputs driven by one output

    Override with max_fanout_load attribute on a net (prev. slide)

    Leonardo splits nets or adds buffers as needed (but buffers add delay)

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    17/42

    Choose ASIC library

    Operatingtemp/voltagefor delay

    calculations

    Advanced settings:Select max fanout

    Technology Tab(ASIC)

    FPGA options includedevice family, part,speed grade andpin selection

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    18/42

    TechnologyTab (FPGA)

    Specify:part,speed grade,wire load,use of IOB registers

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    19/42

    Loading a design into the database

    Input VHDL/ Verilog source file(s) to memory database Analyzesyntax check and build database

    check dependencies & resolve generics/parameters

    Elaboratesynthesize into generic gates and black boxes

    technology-independent gates operators (arithmetic, relational, etc.) recognized and

    implemented with black boxes (no logic in them yet)

    Read command does analyze + elaborate + pre-optimize

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    20/42

    Analyze Command

    analyze {f1.vhd src/f2.vhd top file.vhd} Read and analyze into default memory database library work

    List VHDL files in {} in bottom up order top level last

    Use quotes if embedded spaces in file name: top file.vhd

    Include directory information if necessary: src/f2.vhd

    Analyze command switches:

    -format vhdl (or verilog) [default VHDL if file ext = .vhd/.vhdl orVerilog if file ext = .v/.verilog]

    -worklib_name [lib where design to be stored (default = work.)

    Different libraries might be used for comparing designs] Examples:

    analyze {src/f1.vhd src/f2.vhd}

    analyze {src/f1.vhd src/f2.vhd}worklib_version1

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    21/42

    Elaborate Command

    Elaborate a design previously loaded into the memorydatabase

    elaborate divider [divider = VHDL entity/Verilog module]

    Switches

    -single_level [only do top levelfor bottom-up design] -architecture a1 [if other than most recently analyzed]

    -worklib_name [if name other than work]

    -generics { size=9 use_this=TRUE initval=10011 }

    List format is { generic=value generic=value . }

    -parameters [format same as generics]

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    22/42

    Read command

    Performs both analyze and elaborate steps read {f1.vhd src/f2.vhd top file.vhd}

    Use switches from analyze and elaborate commands, plus:

    -dont_elaborate {f1.vhd}do analysis but not elaborate

    Input Flow Tab can be used to run read/analyze/elaborate

    Uncheck Run Elaborate box for analyze only

    Uncheck Run Pre-Optimization to skip that step for now

    Select other analyze/elaborate options via the Power Tabs

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    23/42

    Input Flow Tab

    FSM encoding

    HDL file list:List VHDL files frombottom to top levels ofhierarchy.

    Share resources (adders,

    etc.) to do multiple ops

    Run Elaborate stepafter Analysis.

    Run Pre-Optimizestep after Elaborate Power Tabs below here

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    24/42

    Elaborate & VHDL Options Power Tabs

    Elaborate: Select:top-level design name,architecture,work library,generics,top-level only

    VHDL Options:Select VHDL 87 instead of 93

    Other power tabs for other formats

    (Verilog, SDL, etc.)

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    25/42

    Design Constraints

    Area constraints Timing constraints

    Simple: specify target clock frequency

    Advanced: specify globally or on specific blocks

    Clock: period/frequency, pulse width, duty cycle Input: arrival time, transition times, driver strength

    Output: required time, transition times

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    26/42

    Design Constraints Area constraints

    Timing constraints (clocks, delays, inputs, outputs)

    Simple: specify target clock frequency

    Advanced: specify globally or on specific blocks

    Four delay variables can be specified:

    Input pin to output pin (through combinational logic)

    Input pin to register & register to output pin

    Register (from time it is clocked) to register (to meet setup time)

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    27/42

    Clock-related constraints

    clock_cycle

    pulse_width

    clock_offset

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    28/42

    Clock constraint examples

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    29/42

    Global clock and delayconstraints

    - Clock fequency/period- Max delays

    These apply to the entiredesign, except for objectsfor which attributes havebeen defined that specify

    other clock values.

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    30/42

    Individual clocknet attributes

    Clock name(s)

    These override theglobal clock settingsfor the selected clocksignals.

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    31/42

    Input constraints

    Arrival time at input pin from previouscircuit, relative to the clock.

    Drive level of circuit driving the pin &max rise/fall time allowed used indelay/loading calculations.

    Pin

    Clk

    D Q

    Clk

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    32/42

    Output constraints

    Time signal from an output pin isrequired the next circuit.

    Max rise/fall time allowed used indelay/loading calculations.

    Pin

    Clk

    D Q

    Clk

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    33/42

    Sequential circuit example (Synopsys)

    create_clock -period 20 -waveform {5 15} clkacreate_clock -period 30 -waveform {10 25} clkbset_input_delay 10.4 -clockclka in1set_input_delay 6.4 -clockclkb -add_delay in1set_output_delay 1.6 -clockclka -min out1set_output_delay 4.8 -clockclka -max out1

    Arrival at input pin fromprevious clock edgeSetup time of output pinfrom next clock edge

    Required clock periods

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    34/42

    Other signal constraints

    Preserve signal duringoptimization(do not eliminate it)

    preserve_signal attribute

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    35/42

    Module constraints

    Dont touch: keep module as-is,including lower levels

    No Opt: keep selected module,but lower levels may be optimized

    Select area/delay optimizationand effort level for each module

    Select modules

    Commands/Attributes:

    dont_touch, noopt

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    36/42

    Write a Constraint File

    For subsequent synthesisand/or for physical place &route tool.

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    37/42

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    38/42

    Pre-Optimize Power Tab

    Select specific design to pre-optimize

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    39/42

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    40/42

    Optimize Tab

    Set variables for bothoptimize andoptimize_timingcommands

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    41/42

    Advanced SettingsOptimize Timing

  • 8/8/2019 VHDL 6 Synthesis With VHDL Leonardo

    42/42

    Output Tab

    Write one or more files:VHDL netlistVerilog netlistSDF (timing)

    Select Technology Cellsfor circuit structure ofcells from the technologylibrary.