A. Setting Up the Environment a. ~/ece394 % mkdir synopsys b.

Similar documents
Tutorial for Verilog Synthesis Lab (Part 2)

Getting a Quick Start 2

Graduate Institute of Electronics Engineering, NTU Synopsys Synthesis Overview

CS/EE 6710 Digital VLSI Design Tutorial on Cadence to Synopsys Interface (CSI)

Laboratory 5. - Using Design Compiler for Synthesis. By Mulong Li, 2013

Compile RISC_CORE. Learning Objectives. After completing this lab, you should be able to: Perform a top-down compile strategy on the RISC_CORE design

LECTURE 5: VHDL SYNTHESIS with SYNOPSYS dc_shell

VIVADO TUTORIAL- TIMING AND POWER ANALYSIS

RTL Synthesis using Design Compiler. Dr Basel Halak

Overview. Design flow. Principles of logic synthesis. Logic Synthesis with the common tools. Conclusions

King Fahd University of Petroleum and Minerals. Computer Engineering Department. COE 561 Digital Systems Design and Synthesis (Course Activity)

Pipelined MIPS CPU Synthesis and On-Die Representation ECE472 Joseph Crop Stewart Myers

Setup file.synopsys_dc.setup

Partitioning for Better Synthesis Results

EE4415 Integrated Digital Design Project Report. Name: Phang Swee King Matric Number: U066584J

DC-Tcl Procedures. Learning Objectives. After completing this lab, you should be able to: Write generic DC-Tcl procedures. Lab Duration: 30 minutes

SmartTime for Libero SoC v11.5

Introduction to Design Compiler

Hardware Verification Group. Department of Electrical and Computer Engineering, Concordia University, Montreal, Canada. CAD Tool Tutorial.

Logic Synthesis. Logic Synthesis. Gate-Level Optimization. Logic Synthesis Flow. Logic Synthesis. = Translation+ Optimization+ Mapping

Multiple Clocks and Timing Exceptions

Preparing for Optimization 7

1 Design Process HOME CONTENTS INDEX. For further assistance, or call your local support center

Synthesis. Other key files. Standard cell (NAND, NOR, Flip-Flop, etc.) FPGA CLB

UNIVERSITY OF CALIFORNIA, DAVIS Department of Electrical and Computer Engineering. EEC180A DIGITAL SYSTEMS I Winter 2015

Tutorial for Altera DE1 and Quartus II

Altera Quartus II Synopsys Design Vision Tutorial

Lab 1 Modular Design and Testbench Simulation ENGIN 341 Advanced Digital Design University of Massachusetts Boston

Specifying Timing Exceptions

Automated Synthesis from HDL models. Design Compiler (Synopsys) Leonardo (Mentor Graphics)

ECE 551 Design Vision Tutorial

Lecture 11 Logic Synthesis, Part 2

Virtex 2.1i tutorial: Verilog using FPGA Compiler and VerilogXL

2 nd Year Laboratory. Experiment: FPGA Design with Verilog. Department of Electrical & Electronic Engineering. Imperial College London.

Circuit Design and Simulation with VHDL 2nd edition Volnei A. Pedroni MIT Press, 2010 Book web:

CSE P567 - Winter 2010 Lab 1 Introduction to FGPA CAD Tools

Tutorial 2.(b) : Synthesizing your design using the Synopsys Design Compiler ( For DFT Flow)

Part B. Dengxue Yan Washington University in St. Louis

EXPERIMENT NUMBER 7 HIERARCHICAL DESIGN OF A FOUR BIT ADDER (EDA-2)

Push-button Synthesis or, Using dc_perl to do_the_right_thing

Graduate Institute of Electronics Engineering, NTU Synopsys Synthesis Overview

EE183 LAB TUTORIAL. Introduction. Projects. Design Entry

Actel Libero TM Integrated Design Environment v2.3 Structural Schematic Flow Design Tutorial

Standard Cell Based Design Flow Using Modelsim, Buildgates, and Silicon Ensemble

Using XILINX WebPACK Software to Create CPLD Designs

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science Introductory Digital Systems Laboratory

Contents. Appendix B HDL Entry Tutorial 2 Page 1 of 14

Introduction to STA using PT

CPE/EE 427, CPE 527, VLSI Design I: Tutorial #4, Standard cell design flow (from verilog to layout, 8-bit accumulator)

TDTS01. Computer Aided Design of Electronics. Lab Compendium

Introduction. About this tutorial. How to use this tutorial

Verilog Design Entry, Synthesis, and Behavioral Simulation

ECSE-323 Digital System Design. Lab #1 Using the Altera Quartus II Software Fall 2008

Step 1: Downloading the source files

Don t expect to be able to write and debug your code during the lab session.

TLL5000 Electronic System Design Base Module

Quick Tutorial for Quartus II & ModelSim Altera

Design Rules and Min Timing

ENGN 1630: CPLD Simulation Fall ENGN 1630 Fall Simulating XC9572XLs on the ENGN1630 CPLD-II Board Using Xilinx ISim

Getting Started with Xilinx WebPack 13.1

Using Synplify Pro, ISE and ModelSim

EE 5327 VLSI Design Laboratory Lab 8 (1 week) Formal Verification

Getting started with the Xilinx Project Navigator and the Digilent BASYS 2 board.

TLL5000 Electronic System Design Base Module. Getting Started Guide, Ver 3.4

Introduction to Design Vision. Instructor: Prof. Shantanu Dutt. TA: Soumya Banerjee

Xilinx Project Navigator Reference Guide

Timing Analyzer Quick-Start Tutorial

VHDL Introduction to tools. TSTE12 Datorteknik Kent Palmkvist, Thomas Johansson. Version

CPE/EE 427, CPE 527, VLSI Design I: Tutorial #3, Standard cell design flow (from schematic to layout, 8-bit accumulator)

FPGA Design Flow 1. All About FPGA

EE115C Digital Electronic Circuits. Tutorial 2: Hierarchical Schematic and Simulation

VHDL for Synthesis. Course Description. Course Duration. Goals

Hardware Verification Group

Quartus II Introduction Using Verilog Design

CPE/EE 427, CPE 527, VLSI Design I: Tutorial #3, Standard cell design flow (from schematic to layout, 8-bit accumulator)

EMT1250 LABORATORY EXPERIMENT. EXPERIMENT # 6: Quartus II Tutorial and Practice. Name: Date:

EET2141 Project 2: Binary Adder Using Xilinx 7.1i Due Friday April 25

Introduction to WebPACK 3.1. Using XILINX WebPACK Software to Create CPLD Designs

Xilinx ChipScope ICON/VIO/ILA Tutorial

ECE 4514 Digital Design II. Spring Lecture 20: Timing Analysis and Timed Simulation

FPGA Design Challenge :Techkriti 14 Digital Design using Verilog Part 1

Using ModelSim to Simulate Logic Circuits in VHDL Designs. 1 Introduction. For Quartus II 13.0

E85: Digital Design and Computer Engineering Lab 2: FPGA Tools and Combinatorial Logic Design

Applications Note. HDL Simulation FPGA Design Methodology. October 15, Revision 1.0

How to Get Started. Figure 3

EE 361L Digital Systems and Computer Design Laboratory

Lecture 1: Introduction Course arrangements Recap of basic digital design concepts EDA tool demonstration

Using the Xilinx CORE Generator in Foundation ISE 3.1i with ModelSim

Altera/Synopsys User Guide

University of Florida EEL 3701 Dr. Eric M. Schwartz Department of Electrical & Computer Engineering Revision 0 12-Jun-16

CPE/EE 427, CPE 527, VLSI Design I: VHDL design simulation, synthesis, and ASIC flow, Laboratory #8,

EE 367 Logic Design Lab #1 Introduction to Xilinx ISE and the ML40X Eval Board Date: 1/21/09 Due: 1/28/09

FPGA Design Tutorial

PrimeTime: Introduction to Static Timing Analysis Workshop

HOW TO SYNTHESIZE VERILOG CODE USING RTL COMPILER

101-1 Under-Graduate Project Digital IC Design Flow

Lab 1: FPGA Physical Layout

Design Flow Tutorial

Tutorial on FPGA Design Flow based on Xilinx ISE WebPack and ModelSim. ver. 2.0

DesignDirect-CPLD Tutorial Manual

Transcription:

ECE 394 ASIC & FPGA Design Synopsys Design Compiler and Design Analyzer Tutorial A. Setting Up the Environment a. Create a new folder (i.e. synopsys) under your ece394 directory ~/ece394 % mkdir synopsys b. Copy the environment and setup files to this folder from /vol/ece394 ~/ece394 % cd synopsys ~/ece394/synopsys % cp /vol/ece394/.synopsys_dc.setup./ ~/ece394/synopsys % cp /vol/ece394/synopsys.env./ ~/ece394/synopsys % ls la Now you must be able to see both of the files in your directory. c. Setup your environment ~/ece394/synopsys % source synopsys.env d. Copy your.vhd files to /synopsys folder (this may change depending on where you keep your design files and their names) I ll go with the full adder example in class. ~/ece394/synopsys % cp../my_vhdfiles/ha.vhd./ ~/ece394/synopsys % cp../my_vhdfiles/or.vhd./ ~/ece394/synopsys % cp../my_vhdfiles/fa.vhd./ At this point you can either choose to use the Design Compiler (the one without the graphic interface) or you can use Design Analyzer (the one with the GUI). In either case you can execute the compiler commands that I tried to cover in class one by one (or in Design Analyzer case use the GUI menus to perform those executions) or create a script file (ie synth.script) B. Creating Your Script File a. Choose your favorite text editor program (i.e. xemacs) ~/ece394/synopsys % xemacs & b. Insert the compiler commands that you want to use. Here only the most basic and widely used commands will be covered. These commands you should be enough for the scope of this course but if you are really interested in the tool or need to setup a different constraint in another project I d recommend a google search on them. Analyze all your vhdl files that are hierarchically related to your top level design that you are synthesizing. analyze format vhdl HA.vhd analyze format vhdl OR.vhd analyze format vhdl FA.vhd Elaborate just your top level entity elaborate full_adder arch structural Set your current design to your top level design (this tells DC which module you want it to work on) current_design adder Uniquify your components (explained in class) uniquify

Setting up the operating conditions of the environment: set_operating_conditions library lsi_10k parameter where parameter can be WCCOM BCCOM worst/best case commercial WCIND BCIND worst/best case industrial WCMIL BCMIL worst/best case military Setting the input and output drive strengths. For set drive the value entered before the input pin name corresponds to the port drive resistance (>=0) where a bigger value corresponds to a pin harder to drive (so 0 means this pin is highly unresistive). For the set_load the value specifies the capacitance value of the output pin. set_drive 0 in1 set_drive 2 in1 set_load 0.5 sum Setting up timing and area constraints: Create a clock. Since we don t have a clock in this design these commands are just given FYI. create_clock period 10 name CLK set_clock_skew ideal CLK for ideal clocking set_clock_skew propagated CLK propagate clock delays through network set_clock_skew uncertainty 0.2 CLK Input and Output delays relative to a clock. For example set_input_delay command defines the time a data arrives at an input port relative to a clock edge (ie there is extra logic between the flip flop driving the input of this module, so it takes extra time to have a valid input). set_input_delay 3 clock CLK in1 set_input_delay 5 clock CLK in2 set_output_delay 5 clock CLK sum Setting up delay requirements for a specific path: set_max_delay 10 from in1 to sum set_max_delay 10 from in2 to sum Specify a signal not to be optimised (ie clocks will optimised by clock tree insertion, so DC shouldn t try to optimise it for now) set_dont_touch_network <object list> Setting up area constraint. Usually the value given for area optimisation is 0, which means after meeting the timing constraints, minimize the area as much as possible. set_max_area 0 Compilation. Map effort high parameter tries to optimise the logic in the critical path to meet the timing constraints. Use it only when your initial compile does not meet your specifications because high effort increases compilation time drastically. Scan parameter replaces all your flipflops with Scan flipflops for testing and verification purposes (to generate the scan chain) compile OR compile scan

OR compile map_effort high -scan Write the generated netlist to a file write format vhdl hierarchy output FA.svhd Creating your timing and area reports. (area_log and timing_log are just file names) In report timing you can set the number of paths you want to be reported (in this example 3 worst delay paths) report_area > area_log report_timing -max_paths 3 > timing_log Close the compiler quit c. Save your script file (i.e. synth.script) C. Synthesis with Design Compiler Shell a. Since you have set up your environment and created your script file all you have to do is to type ~/ece394/synopsys % dc_shell f synth.script >& log_file log_file will keep the log of your synthesis, for example if something goes wrong(i.e. cannot locate one of your files, a typo in your script or vhdl files etc.) you can see it in that log file. b. You can find the timing and area reports of your synthesis in the area_log and timing_log files, where you can see if your circuit meets the timing constraints or not and determine the speed-area pair which optimizes your design in the design curve (01.21.05 lecture slide 9) c. Also if you just type ~/ece394/synopsys % dc_shell the DC shell command line will open for you to type the commands one by one and if you type a command (i.e. set_max_area) without its parameters, you ll get an error message and the shell will tell you what kind of parameters you can use and the syntax for the command. D. Synthesis with Design Analyzer GUI a. Type the line below to start the GUI. ~/ece394/synopsys % design_analyzer The design analyzer window will pop Note: the directory where you invoke design_analyzer would contain the command.log file which lists the commands executed. b. Verify that your.synopsys_dc.setup file was executed by selecting Setup -> Defaults. You should be able to see link library is * lsi_10k.db; target library is lsi_10k.db and symbol library is class.sdb. Close the setup menu window by selecting Cancel, please DO NOT close any windows in the Design Analyzer by using the "close" window command of the native windowing environment! ALWAYS use the Cancel buttons provided.

c. Select Setup -> Command Window to bring up the window that gives you access to dc_shell and also immediate feedback on the progress of your synthesis session. Resize it and drag it to the appropriate place in your display. All commands entered via the menus of the Design Analyzer are echoed, so you can learn how to write dc_shell commands that you don t know from this. d. Select File -> Analyze, go to your ece394/synopsys directory to see the appropriate files. Select the appropriate format for File Format. To analyze more than one HDL file: click on the first file with the left mouse button, and select the other files using the middle mouse button. Or simply type them all in the "File Name" box, separating the files with spaces (not commas). e. Inspect the messages in the Analyze window, correct any syntax errors in your HDL files and do the analyze again, otherwise, cancel the Analyze window and proceed. f. Select File -> Elaborate, select full_adder from the Library box, select your "top level design" from the Design box, and click OK. Elaboration brings all the associated lower level blocks into the Design Compiler automatically (by following the dependency of the instantiations within the HDL code). After the elaboration is done, cancel the Elaborate window. g. On the left side of the Design Analyzer window are the View buttons. The top 4 buttons select the type of view: Design, Symbol, Schematic or Text. The bottom 2 buttons are used to traverse the hierarchy of a design. Select the icon for your top level design block, say full_adder, by clicking on it, the border of icon is shown as a dashed line instead of a solid line, the design is now full_adder, as seen in the lower left corner of the Design Analyzer window. h. Double click on the adder icon and this will produce the Symbol View. The Symbol View is convenient for applying attributes and constraints to a design. Click on the appropriate port and select from the Attributes menu your desired constraints. For example if you select in1 and sum then select Attributes>Optimisation Constraints>Timing Constraints a new window will pop up where you ll see a from field which contains in1 signals and a to field which contains sum field. If you fill maximum delay>rise 10 and select same Rise and Fall, it ll equivalent to say set_max_delay 10 from in1 to sum. If your design has a clock port, you have to select your clock port and select Dont Touch Network in the Attributes>Clocks>Specify window, Synopsys does not effectively synthesize clock tree. You can also set your clock period in the same window. Also you can set your input/output delays, drive strengths/loads, operating conditions and wire load models from this menu. Attributes>Operating Environment>

Please see the Design Compiler part for properties of this 6 commands. i. If you go to Attributes>Optimisation Constraints>Design Constraints you can specify the maximum area and maximum fanout constraint. j. At this point you may save your design as an unmapped db format, select File -> Save As, navigate to the./db directory in the Directory menu, and name your design as control_unmap.db, choose DB as the File Format. When a design is saved as a.db file, the design plus all attributes are saved. The equivalent dc_shell command will be: write -format db -hierarchy output FA.db k. Next time you want to retrieve the already elaborated but unmapped design, you could select File -> Read with DB as file format. You can enter reset_design in the command window to remove all attributes and apply new attributes if needed. l. Compilation and optimization: Select Tools -> Design Optimization, the default Map Design setting is Medium. Then click on OK, it might take a few hours or even more than a day to compile. Do not apply other options in your first compile run. m. When the optimization is complete, a Cancel button located at the bottom of the Compile Log Window will become grayed in" indicating that you can cancel the window and view your results. n. Inspection of results: Notice the changes in any icon of your design, it is now optimized to gate level, double click on the icon to reach the Symbol View, then click on the Schematic View button to inspect the design. Select View -> Zoom In to zoom in. o. You can select pin(s) or port(s) from the design, then select from Analysis -> Highlight and a type of highlighting to see the path to the pin or port. Control-T is a shortcut to see the critical path. p. Select a design block (the top level design if your design is hierarchical), do Analysis -> Report, click on Area, Timing, you could direct the output to a file for later reference. Inspect the Report Output window, use the mouse to select a line, click on the Next button, the item(s) in the corresponding schematic will be "selected" automatically. The equivalent dc_shell commands will be: report_area report_timing q. Inspect the timing report, each Incr entry indicates the delay from the previous point to the current point, and the Path entry indicates the total delay from the input external delay to the current point. You can detect any suspicious path with exceptional long delay through this inspection. The most important thing is to check the slack, which is the required delay minus the actual delay, if it

reports MET, your design has met the timing constraints, if it reports VIOLATED, you should go back to your HDL code and re-write it to improve timing. Then go back and re-analyze -elaborate the block and compile the whole design again. r. Save your design by selecting File -> Save As, navigate to the.db directory in the Directory menu and choose DB as the File Format, it is recommended to use the Save All Designs in Hierarchy option. s. You might want to read in another design without quitting Design Analyzer, you could first remove the current design by selecting the design to be removed, then Edit -> Delete. This would remove the design from the Design Compiler memory, it would not remove any physical design files. t. To quit the Design Analyzer, select File -> Quit and click OK. E. Post-Synthesis Simulation: ModelSim simulations with the netlist generated by the Synopsys tools. During the period when you were adding your.vhd files to your library (either using the ModelSim GUI or by typing vcom ***.vhd) instead of adding the.vhd file if you specify the netlist file you write (ie FA.svhd) the simulations will be carried on using the netlist not the.vhd file, so in this way you can see the delays of different paths and the result converging in time rather time taking the correct value at the same instant the inputs change! F. Further Questions about the Tools For your further questions about the Synopsys Design Compiler and/or Design Analyzer or if you want to comment on this tutorial, you can email Min or me. There is a sample script file for.vhd files for the full adder example. You can copy it from /vol/ece394/ ~/ece394/synopsys % cp /vol/ece394/synth.script./