Synopsys Synthesis Overview -...

Preview:

Citation preview

ACCESS IC LAB

Graduate Institute of Electronics Engineering, NTU

SynopsysSynopsys Synthesis OverviewSynthesis Overview

Ben2006.02.16

Graduate Institute of Electronics Engineering, NTU

pp. 2

OutlineOutlineIntroductionSetting Design EnvironmentSetting Design ConstraintsSynthesis Report and Analysis

Graduate Institute of Electronics Engineering, NTU

pp. 3

What is SynthesisWhat is SynthesisSynthesis = translation + optimization

Graduate Institute of Electronics Engineering, NTU

pp. 4

Logic Synthesis OverviewLogic Synthesis Overview

no timing info.

timing info.

Graduate Institute of Electronics Engineering, NTU

pp. 5

SynopsysSynopsys Related FilesRelated Files

NoteThese 3 files are always read in the same order.Any repeated command can override the previous one.

Set path and environment variables and license check.cshrc

Three distinct files are read and executed when DC is invoked1. system-wide (do not modify):

(e.g. $SYNOPSYS/admin/setup/)2. User’s home directory (e.g. ~think/)3. User’s current working directory (e.g. ~think/dv/)

.synopsys_dc.setup

Set X terminal display variables.Xdefault

PurposeFiles

Graduate Institute of Electronics Engineering, NTU

pp. 6

Synthesis Design FlowSynthesis Design FlowSpecification

RTL Coding Prepare

Setting Design Environment

Setting Design Constraint

Compile Design

Analysis

CellLibrary

Gate-level Netlist

Develop the HDL design description and simulate the design description to verify that it is correct.Set up the .synopsys_dc.setup file.

Set the appropriate technology, synthetic, and symbol libraries, target libraries, and link libraries.Set the necessary compilation options, including options to read in the input files and specify the output formats.

Read the HDL design description.Define the design.

Set design attributesDefine environmental conditionsSet design rulesSet realistic constraints (timing and area goals)Determine a compile methodology

ACCESS IC LAB

Graduate Institute of Electronics Engineering, NTU

Setting Design EnvironmentSetting Design Environment

Graduate Institute of Electronics Engineering, NTU

pp. 8

Setting Design EnvironmentSetting Design EnvironmentSetting Operating EnvironmentSetting Input Driving StrengthSetting Output LoadingSetting Input/Output DelaySetting Wire Load Model

Graduate Institute of Electronics Engineering, NTU

pp. 9

Setting Operating EnvironmentSetting Operating EnvironmentAttributes/Operating Environment

Graduate Institute of Electronics Engineering, NTU

pp. 10

Setting Operating ConditionSetting Operating ConditionAttributes/Operating Environment/Operating Condition

dc_shell> set_operating_conditions “slow”

Graduate Institute of Electronics Engineering, NTU

pp. 11

Setting Input Drive ImpedanceSetting Input Drive ImpedanceAttribute/Operating Environment/Drive Strength

Graduate Institute of Electronics Engineering, NTU

pp. 12

Setting Input Drive ImpedanceSetting Input Drive ImpedanceAlso can be set using “drive_of” command

Example: (P2A cell output)

Graduate Institute of Electronics Engineering, NTU

pp. 13

Setting Output LoadingSetting Output LoadingAttribute/Operating Environment/Load

Graduate Institute of Electronics Engineering, NTU

pp. 14

Setting Output LoadingSetting Output LoadingAlso can be set using load_of:

Example: (bufferd1 cell input)

Graduate Institute of Electronics Engineering, NTU

pp. 15

Setting Input DelaySetting Input DelaySelect input portsAttributes/Operating Environment/Input Delay

Graduate Institute of Electronics Engineering, NTU

pp. 16

Setting Output DelaySetting Output DelaySelect output portsAttributes/Operating Environment/Output Delay

Graduate Institute of Electronics Engineering, NTU

pp. 17

Setting Wire Load ModelSetting Wire Load ModelWire load model estimates wire capacitance based on chip area & cell fanoutSetting this information during compile in order to model the design more accuratelyAttributes/Operating Environment/Wire Load

ACCESS IC LAB

Graduate Institute of Electronics Engineering, NTU

Setting Design ConstraintsSetting Design Constraints

Graduate Institute of Electronics Engineering, NTU

pp. 19

ConstraintsConstraintsConstraints are goals that the Design Compiler uses for optimizing a design into target technology library.Design Rule Constraints : technology-specific restriction; ex. maximum transition, maximum fanout, maximum capacitance.Optimization Constraints : design goals and requirements; ex. maximum delay, minimum delay, maximum area, maximum power.During compile, Design Compiler attempts to meet all constraints.

Graduate Institute of Electronics Engineering, NTU

pp. 20

Setting Design ConstraintsSetting Design ConstraintsOptimization Constraints

Basic clock constraints conceptConstraints & STA for Special CircuitConstraints for Area

Design Rule ConstraintsFinal check constraints before compile

Graduate Institute of Electronics Engineering, NTU

pp. 21

Define Clock SpecificationDefine Clock SpecificationWhat should be defined?

PeriodWaveformUncertainty

Skew

LatencySource latency (option)Network latency

TransitionInput transitionClock transition

Graduate Institute of Electronics Engineering, NTU

pp. 22

Specify Clock Constrains Specify Clock Constrains Select clock portAttributes/Clocks/Specify creat_clock : define your clock’s

waveform & respect the set-up time requirements of all clocked flip-flops

creat_clock “clk”-period 50 -waveform {0 25}

set_fix_hold : respect the hold time requirement of all clocked flip-flops

set_fix_hold clkset_dont_touch_network : do not re-buffer the clock network

set_dont_touch_network clk

Graduate Institute of Electronics Engineering, NTU

pp. 23

Constraints & STA for Special CircuitConstraints & STA for Special CircuitWhat should be noticed?

Multicycle PathClock Gating TechniqueLatch-Based & Timing Borrow AnalysisFalse Pathset_case_analysisMultiple Clocks Overlapping

Graduate Institute of Electronics Engineering, NTU

pp. 24

MulticycleMulticycle PathPath

To define setup multiplier 2 for the path from FF1 to FF2 but maintain a hold multiplier 0, use command:

set_multicycle_path 2 -from FF1 -to FF2

Graduate Institute of Electronics Engineering, NTU

pp. 25

False PathFalse PathA false path is a timing path that cannot propagate a signal, or a path we wish to ignore timing constraints.The set_false_path can be used to disable timing-based synthesis on a path-by-path basisIt is useful for:

Constraining asynchronous pathsConstraining logically false paths

Graduate Institute of Electronics Engineering, NTU

pp. 26

Setting Area ConstraintSetting Area ConstraintAttributes/OptimizationConstraints/Design ConstraintsArea Unit : gates

Graduate Institute of Electronics Engineering, NTU

pp. 27

Setting Design ConstraintsSetting Design ConstraintsOptimization Constraints

Basic clock constraints conceptConstraints & STA for Special CircuitConstraints for Area

Design Rule ConstraintsFinal check constraints before compile

Graduate Institute of Electronics Engineering, NTU

pp. 28

Design Rule ConstraintsDesign Rule ConstraintsDesign rules can’t be violated at any cost, even if it will violate the timing and area goal.Three kinds of design rule constraint are set:

set_max_transitionset_max_fanoutset_max_capacitance

Graduate Institute of Electronics Engineering, NTU

pp. 29

Setting Design ConstraintsSetting Design ConstraintsOptimization Constraints

Basic clock constraints conceptConstraints & STA for Special CircuitConstraints for Area

Design Rule ConstraintsFinal check constraints before compile

Graduate Institute of Electronics Engineering, NTU

pp. 30

Check DesignCheck DesignAfter you set up the deign attributes & design constraints, we recommend the next step is to check designAnalysis/Check DesignThe warning message is called “multiple design instance”, it results from that you use the same HDL description to represent more that one design instanceHow to handle ?

dont_touchungroupuniquify

Graduate Institute of Electronics Engineering, NTU

pp. 31

Method 1: Method 1: dont_touchdont_touchProcedures

Constrain the blockCompile the blockSelect the multiple design instances blockAttributes/Optimization Directives/Design & set the Don’t Touch buttonCompile the whole design using hierarchy compile

Graduate Institute of Electronics Engineering, NTU

pp. 32

Method 2: UngroupMethod 2: UngroupProcedures

Select the multiple design instances blockAttributes/Optimization Directives/Design & set the Ungroup buttonCompile whole design using hierarchy compile

Remove a single level of hierarchyDoes not preserve the hierarchyTake more memoryTake more compile time

Graduate Institute of Electronics Engineering, NTU

pp. 33

Method 3: Method 3: UniquifyUniquify

Create a unique design file for each instanceMay select one cell or entire design hierarchy to be uniquifyAllow design to be customized to its interfaceIf the environment varies significantly, use uniquify rather than compile+dont_touchUniquify uses more memory and cause longer compile time than compile+dont_touch

Select the most top designof the hierarchyEdit/Uniquify/Hierarchy

Graduate Institute of Electronics Engineering, NTU

pp. 34

Multiple Design Instance (summary)Multiple Design Instance (summary)Use “dont_touch, ungroup, uniquify” to fix itThe easiest way is uniquify, but needs much memory & compile timeIf you want to preserve the hierarchy & source sharing, use don’t_touchIf you want your design to have the BEST result, recommend to use ungroup, but it needs the most memory and compile time

Graduate Institute of Electronics Engineering, NTU

pp. 35

Setting Design ConstraintsSetting Design ConstraintsOptimization Constraints

Basic clock constraints conceptConstraints & STA for Special CircuitConstraints for Area

Design Rule ConstraintsFinal check constraints before compile

Graduate Institute of Electronics Engineering, NTU

pp. 36

Check Constraints & AttributesCheck Constraints & AttributesUse the following reports to check constraints & attributes before compilingAnalysis/Report

Graduate Institute of Electronics Engineering, NTU

pp. 37

Save Constraints & AttributesSave Constraints & AttributesSave attributes & constraints setting as the design setup file in dc_shell command format, use File/Save Info/Design Setup

Graduate Institute of Electronics Engineering, NTU

pp. 38

Execute Script FileExecute Script FileExecute dc_shell command script file, use Setup/Execute Script

ACCESS IC LAB

Graduate Institute of Electronics Engineering, NTU

Synthesis Report and AnalysisSynthesis Report and Analysis

Graduate Institute of Electronics Engineering, NTU

pp. 40

ReportReportAnalysis/Report

From report and analysis, you can find the set attributes and the results after optimization

Attribute reportsAll attributes, clock, port,design, net

Analysis reportsArea, hierarchy, constraints,timing, point timing

Graduate Institute of Electronics Engineering, NTU

pp. 41

Timing ReportTiming Report

Graduate Institute of Electronics Engineering, NTU

pp. 42

Analyze Circuit with SchematicAnalyze Circuit with SchematicTo determine the time the signal arrived at pin which is selected in the schematicAnalysis/Show Timing

Graduate Institute of Electronics Engineering, NTU

pp. 43

Analyze Circuit with SchematicAnalyze Circuit with SchematicTo determine the net load which selected in the schematicAnalysis/Show Net Load

Graduate Institute of Electronics Engineering, NTU

pp. 44

Save DesignSave DesignSave your design in verilog format, run Verilog gate-level simulation, and we will use Verilog In interface to translate it into OPUS database for place & routeIf you can’t Verilog In, please check assign problemif there is any assignment problem, choose the block & use the dc_shell command as follow to fix it

set_fix_multiple_port_nets -all -buffer_constantscompile -map_effort medium

Graduate Institute of Electronics Engineering, NTU

pp. 45

GateGate--Level Simulation (Verilog)Level Simulation (Verilog)Write out gate-level netlist

File/Save As Verilog (for File format)dc_shell> write -format verilog –hierarchy -output chip.vg

Get SDFFile/Save Info Design timing Select chip.sdfdc_shell> write_sdf –version 1.0 -context verilog chip.sdf

Modify your testbench file$sdf_annotate (“the_SDF_file_name”, top_module_instance_name);

Simulation using Verilog-XL>> Verilog chip.vg testbench.v –v cell_model.v

ACCESS IC LAB

Graduate Institute of Electronics Engineering, NTU

Design ExampleDesign Example

Ben2006.02.16

Graduate Institute of Electronics Engineering, NTU

pp. 47

SynopsysSynopsys Design Vision (GUI) /Design Vision (GUI) /Design Compiler (text mode) Design Compiler (text mode)

Unix% dv –dcsh_mode & Unix% dc_shell

Graduate Institute of Electronics Engineering, NTU

pp. 48

Read Read VerilogVerilog FileFile

read -format verilog {"Lab1_alu.v"}

Graduate Institute of Electronics Engineering, NTU

pp. 49

Schematic viewSchematic viewSynopsys Design analyzer will translate verilog code into G-tech model. Double click the icon “ALU”, and click the right button then choose Schematic view. We can get the G-tech MAP

Graduate Institute of Electronics Engineering, NTU

pp. 50

Symbol viewSymbol viewOr you can create a symbol view by click on the following symbolview button. The symbol view is as the right window

Graduate Institute of Electronics Engineering, NTU

pp. 51

Set Clock (1/2)Set Clock (1/2)“Attributes”-“Specify Clock”

Graduate Institute of Electronics Engineering, NTU

pp. 52

Set Clock (2/2)Set Clock (2/2)Specify the clock as period 10ns. (100 MHz). Don’t forget to select “don’t touch network” and “fix hold”

create_clock -name "clk" -period 10 -waveform {"0" "5"} {"clk"}set_dont_touch_network find( clock, "clk")set_fix_hold clk

Graduate Institute of Electronics Engineering, NTU

pp. 53

Operating ConditionOperating Conditionset_operating_conditions "typical" -library "typical"

Graduate Institute of Electronics Engineering, NTU

pp. 54

WireloadWireload ModelModelset_wire_load_model -name "ForQA" -library "typical"set_wire_load_mode "segmented"

Graduate Institute of Electronics Engineering, NTU

pp. 55

Operating EnvironmentOperating EnvironmentSelect “inputA” in the Symbol View and click “Attribute”-“operating environment”-“input delay”. Set 2.5ns input delay.

set_input_delay -clock clk 2.5 inputA[*]set_input_delay -clock clk 3.8 inputB[*]set_input_delay -clock clk 4.5 instruction[*]set_input_delay -clock clk 5.2 reset

set_output_delay -clock clk 8 alu_out[*]

Graduate Institute of Electronics Engineering, NTU

pp. 56

Area & Area & FanoutFanout & Transition& TransitionClick “Attribute”-”optimization Constraints”-“Design constraints”. Set max area is 0. Max fan-out is 8. max transition is 1.

set_max_area 0set_max_fanout 8 find (design, ALU)set_max_transition 1 find (design, ALU)

Graduate Institute of Electronics Engineering, NTU

pp. 57

Compile DesignCompile DesignClick “Design”-”Compile Design”. Click “OK”, start to optimize ALU

compile -map_effort medium

Graduate Institute of Electronics Engineering, NTU

pp. 58

ReportReport

report_timing -path full -delay max -max_paths 1 -nworst 1report_powerreport_area -nosplit

Graduate Institute of Electronics Engineering, NTU

pp. 59

Save FilesSave FilesSave gate-level netlist. Select “File”->”Save As”Save your design. Select “File”-“Save”Save the timing information. Select “File”-“Save Info”-”Design Timing”, choose sdf format.

Save script file with the constraints you have made. Use “write_script > script_file” command or “File”-”Save Info”-”Design Setup“ button.Re-run all steps automatically. Use “include script_file”command or “File”-“Execute Script” button.

write -format verilog -hierarchy -output "ALU_s.v" find (design, ALU)write -format db -hierarchy -output "ALU_s.db" find (design, ALU)write_sdf ALU_s.sdf

Graduate Institute of Electronics Engineering, NTU

pp. 60

gate level simulationgate level simulationBefore gate level simulation, $sdf_annotate(“top_design.sdf”, top_design)must be added after initial in testbench`timescale 1ns/10ps must be added in the 1st line of testbench

//RTL simulationUnix% verilog testfixture.v

//gate level simulationUnix% verilog testfixture_vg.v –v umc18.v

Graduate Institute of Electronics Engineering, NTU

pp. 61

View wave formView wave formUnix% nWave&Open verilog.dump file to see the waveform

Recommended