Tutorial for Verilog Synthesis Lab (Part 2)

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

Getting a Quick Start 2

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

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

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

Introduction to STA using PT

Graduate Institute of Electronics Engineering, NTU Synopsys Synthesis Overview

RTL Synthesis using Design Compiler. Dr Basel Halak

LECTURE 5: VHDL SYNTHESIS with SYNOPSYS dc_shell

Partitioning for Better Synthesis Results

Virtex 2.1i tutorial: Verilog using FPGA Compiler and VerilogXL

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

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

VIVADO TUTORIAL- TIMING AND POWER ANALYSIS

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

Setup file.synopsys_dc.setup

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

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

and 32 bit for 32 bit. If you don t pay attention to this, there will be unexpected behavior in the ISE software and thing may not work properly!

ECE425: Introduction to VLSI System Design Machine Problem 3 Due: 11:59pm Friday, Dec. 15 th 2017

Graduate Institute of Electronics Engineering, NTU Synopsys Synthesis Overview

Hardware Verification Group

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

Part B. Dengxue Yan Washington University in St. Louis

EE183 LAB TUTORIAL. Introduction. Projects. Design Entry

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

Cadence Tutorial A: Schematic Entry and Functional Simulation Created for the MSU VLSI program by Andrew Mason and the AMSaC lab group.

Revision Notes: July2004 Generate tutorial for single transistor analysis. Based on existing schematic entry tutorial developed for ECE410

Tutorial on Quartus II Introduction Using Schematic Designs

Tutorial for Altera DE1 and Quartus II

Boise State University Digital Systems Laboratory

eproduct Designer A Simple Design and Simulation Tutorial

University of Florida EEL 3701 Dr. Eric M. Schwartz Madison Emas, TA Department of Electrical & Computer Engineering Revision 1 5-Jun-17

Tutorial on Quartus II Introduction Using Verilog Code

Introduction. About this tutorial. How to use this tutorial

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

Quartus II Introduction Using Verilog Design

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

Quartus II Introduction Using Schematic Design

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

EE261 Computer Project 1: Using Mentor Graphics for Digital Simulation

SmartTime for Libero SoC v11.5

ELEC 301 Lab 2: Cadence Basic

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

Altera Quartus II Synopsys Design Vision Tutorial

Vivado Design Suite Tutorial. Design Flows Overview

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

VLSI Lab Tutorial 1. Cadence Virtuoso Schematic Composer Introduction

Lecture 11 Logic Synthesis, Part 2

Lesson 14: Property Editor

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

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

ECE 551 Design Vision Tutorial

Introduction to Computer Engineering (E114)

Synthesis and APR Tools Tutorial

EE 330 Spring 2018 Laboratory 2: Basic Boolean Circuits

TUTORIAL #2 HIERARCHICAL DESIGNS AND TEST FIXTURES

Programmable Logic Design Techniques I

Netlist Viewer User's Guide

EE 330 Spring Laboratory 2: Basic Boolean Circuits

Xilinx Schematic Entry Tutorial

Revision: February 27, E Main Suite D Pullman, WA (509) Voice and Fax

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

18. Synopsys Formality Support

Tutorial: Working with the Xilinx tools 14.4

RTL Design and IP Generation Tutorial. PlanAhead Design Tool

Start Active-HDL. Create a new workspace TUTORIAL #1 CREATING AND SIMULATING SIMPLE SCHEMATICS

Place & Route: Using Silicon Ensemble

LAB 2: INTRODUCTION TO LOGIC GATE AND ITS BEHAVIOUR

CS755 CAD TOOL TUTORIAL

Performing STA. Learning Objectives

2 Getting Started. Getting Started (v1.8.6) 3/5/2007

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

CHAPTER 1 INTRODUCTION... 1 CHAPTER 2 ASSIGN THE DEVICE... 7 CHAPTER 3 DESIGN ENTRY CHAPTER 4 COMPILE AND VERIFY YOUR DESIGN...

Xilinx Tutorial Basic Walk-through

Cadence Tutorial A: Schematic Entry and Functional Simulation Created for the MSU VLSI program by Professor A. Mason and the AMSaC lab group.

How to Get Started. Figure 3

UNIVERSITI MALAYSIA PERLIS

Generating Parameterized Modules and IP Cores

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

Lesson 18: Creating a Hierarchical Block

Lab 1: FPGA Physical Layout

Design Compiler Interface 8

Design rule illustrations for the AMI C5N process can be found at:

Tutorial for Encounter

Step 1: Downloading the source files

Chapter 2 Getting Hands on Altera Quartus II Software

Vivado Design Suite Tutorial. Using Constraints

University of California at Berkeley College of Engineering Department of Electrical Engineering and Computer Science. EECS 150 Spring 2000

FPGA Design Tutorial

DOWNLOAD PDF CADENCE WAVEFORM CALCULATOR USER GUIDE

IBM Rational Rhapsody Gateway Add On. User Guide

Quartus II Introduction Using Verilog Designs. 1 Introduction. For Quartus II 12.0

EE 330 Laboratory Experiment Number 11

EE121 Foundation Review Session Page 1 of 16 Winter Learning to Love Xilinx Foundation 4.1i in 40 Easy Steps

ELEC 204 Digital System Design LABORATORY MANUAL

Using the ispxpga Floorplanner

Vivado Tutorial. Introduction. Objectives. Procedure. Lab Workbook. Vivado Tutorial

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

PRELAB! Read the entire lab, and complete the prelab questions (Q1- Q3) on the answer sheet before coming to the laboratory.

Transcription:

Tutorial for Verilog Synthesis Lab (Part 2) Before you synthesize your code, you must absolutely make sure that your verilog code is working properly. You will waste your time if you synthesize a wrong code! A synthesizer takes high-level design file (HDL code) and produces gate level representation of the design using technology library. Same design can be represented in gate level in multiple ways. Using synthesis tool, we will try to get optimized representation of our HDL code. In this tutorial, we will use the simple decoder that we encoded and simulated in Part 1. To complete lab requirement, you must synthesize the serial multiplier that you have written, tested and verified. 1) For synthesis, we will use Design Analyzer from Synopsys. To initiate design analyzer, go to lab3 directory (cd /ELEC4708/lab3) and type design_analyzer. You should see a blank window of Design Analyzer. Investigate through menus to familiarize yourself with the tool. 2) Click Setup->Defaults to setup default environment. 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. 3) Before we proceed further, check to make sure your design environment is set up properly. Open a File Manager and go to the lab3 directory. Select view->show hidden files option. You should see a file named.synopsys_dc_setup (The leading dot means it s a hidden file, in case you are wondering). 4) Right click on the file and select Open. See if following lines exist in your file and are not commented out. If not, edit properly. Save and exit your editor. /* Canadian Microelectronics Corporation * Sample.synopsys_dc.setup file, for use with CMOSP18 * March 14, 2000 * * Library and Search Path variables assume links are in place so * $SYNOPSYS/cmc/cmosp18 points to the libraries in this design kit * which are compiled for the proper version of Synopsys */ /* search_path = {.} ELEC4708: Lab 3 Tutorial (2) Bashir Morshed Page 1 of 8

search_path = search_path + {synopsys_root + /libraries/syn} search_path = search_path + {synopsys_root + /cmc/cmosp18/syn} */ search_path = {.} search_path = search_path + {/CMC/tools/synopsys2004/syn_V-2004.06-SP1/libraries/syn/} search_path = search_path + {/CMC/kits/cmosp18/synopsys/2004/syn} search_path = search_path + {/opt/ads/dsynthesis/lib/verilog} search_path = search_path + {/CMC/tools/synopsys2004/syn_V-2004.06-SP1/libraries/syn + /dw/sim_ver} synlib_wait_for_design_license = {DesignWare-Foundation} link_library = "tpz973gwc.db vst_n18_sc_tsm_c4_wc.db *" target_library = {tpz973gwc.db vst_n18_sc_tsm_c4_wc.db} symbol_library = {} /* Assume there is a./work directory */ define_design_lib work -path Work /* Try and make names compatible with Cadence dfii, from Preview man. */ bus_naming_style = "%s_%d_" verilogout_no_tri = "true" define_name_rules preview -allowed "A-Za-z0-9_" /* Preview man. page says set the verilogout_single_bit = true, but to get the sram cells to work you may need false. */ verilogout_single_bit = "true" /* Some usefull scripts. */ view_script_submenu_items = \ {"Remove All Designs","remove_design find(design \"*\")", \ "Save All Designs", "write find(design \"*\") -out save.db", \ "set_dont_touch All Designs", "set_dont_touch find(design \"*\")", \ "Remove dont_touch All Designs", \ "remove_attribute find(design \"*\") dont_touch", \ "Remove Unconnected Ports", \ "remove_unconnected_ports -blast_buses find(-hierarchy cell, \"*\")", \ "Fix Multiple Ports (on selected hierarchy)", \ "set_fix_multiple_port_nets -all", \ "Change Names for Preview", \ "change_names -rules preview -hierarchy > change_names.out" } 5) Click Setup->Command Window. This will bring up the command 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. Advanced users always use shell command of this command window and script files for synthesis. 6) Click File->Read. Then browse the verilog file. You should notice a block named decoder shown in design analyzer window. Cancel the verilog window. All lines should also be seen in command window. The design analyzer window showing top Hierarchy level of the simple decoder should look like the snapshot below. ELEC4708: Lab 3 Tutorial (2) Bashir Morshed Page 2 of 8

Notice the button on the left hand side toolbar. In your multiplier, you might have one or more modules, depending on your code. 7) To analyze a verilog file, click File->analyze. Then browse through the directory to find your verilog file. For this tutorial we will synthesize 3-bit decoder (located in /lab3/decoder/verilog/verilog.v). Later you have to synthesize the multiplier. As the decoder is much simpler, expect to go through additional requirements for the multiplier. Some tips are given at the end of the tutorial. Enable Create New Library if it does not exist. Default library is WORK. Cancel Analysis window and read info in command window. If successful, go to next step. 8) Select the decoder, then click File->elaborate. Select Library: WORK and Design: Decoder(verilog). Click OK. It produces lower level representations for you design. It might also create another decoder icon. Cancel Elaborate window and read info in command window. 9) Double click on any decoder icon. You will see Symbol level representation with pins for inputs and outputs. Zoom in and see different features of this view. Notice that the active icon on the left side toolbar is changed from top level to symbol level. Also up arrow button became active, as you can move up one level now. These arrows (up and down) are to traverse the hierarchy of a design. ELEC4708: Lab 3 Tutorial (2) Bashir Morshed Page 3 of 8

10) Double click on the decode module and you will see Schematic level representation. It should look like the picture below. This gate level implementation of the 3 bit decoder has 9 inverters, 6 OR gates and 2 AND gates. Zoom in and see different areas in details. Why do you see two colors for wires (green and blue)? Why there are only one input pin and one output pin? Do you think this is the optimal implementation for the decoder? Why? 11) We have to compile the design to get optimized synthesized implementation. For the simple decoder that we have, we will only add capacitive loading at output port and compile it. We will use a capacitive load of 0.2 pf. Symbol level view is convenient for applying attributes and constraints to a design. Select the output pin (port), then click Attribute->Operating Environment->Load, enter 0.2 in ELEC4708: Lab 3 Tutorial (2) Bashir Morshed Page 4 of 8

capacitive load field (do not put unit as no character is permitted, you must use default unit of pf). Click Apply, then Cancel. Cancel the bus selector window also. 12) Now, to synthesize the design, type compile in the command window. Wait until the simulation is done. Go through all the info posted in command window. 13) Look at the new implementation generated by synthesizer. It has actually optimized your design automatically! Now you see only 3 inverters and 8 NOR ELEC4708: Lab 3 Tutorial (2) Bashir Morshed Page 5 of 8

gates. Keeping the functionality same, the synthesizer optimizes a design based on constraints. 14) Scroll the command window and you will notice different steps of optimization and a lot of other information. By default, we have used medium effort for optimization. As you increase your effort, simulation time becomes longer. 15) Click Tools->Design Optimization. You can access some optimization criteria from here. When you click OK, the synthesizer will compile with that option. Otherwise, you can type compile map_effort high to synthesize with high effort. Type compile -? to check out available command line options. For our simple decoder design, however, compiling efforts do not change this decoder schematic, as this is a very simple circuit anyway. For your multiplier, it might make huge differences. ELEC4708: Lab 3 Tutorial (2) Bashir Morshed Page 6 of 8

16) To save your design as an unmapped db format, select File -> Save As, navigate to the WORK directory in the Directory menu, and name your design as decoder.db, choose DB as the File Format. Select Save all designs in hierarchy option. When a design is saved as a.db file, the design plus all attributes are saved. The equivalent command will be: write -format db -hierarchy output decoder.db. 17) For reports, select the top level design, click Analysis -> Report, select 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 and report_timing. 18) To exit the design analyzer, select File->Quit. Click OK. ELEC4708: Lab 3 Tutorial (2) Bashir Morshed Page 7 of 8

Some tips for the serial multiplier synthesis: To read in another design without quitting Design Analyzer, 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. Then load another design by analyze, read. To analyze or read multiple files, use left mouse button to select one file, then use middle mouse button to select the rest. You can also type names in the window with space in between (not comma). Notice the prompts in command window. Look for errors and warnings. Those lines are printed for reasons! In design analyzer section, you might need to do uniquify after your have done Read, Analyze and Elaborate (depending on your code). To uniquify, select the TOP MODULE and click Edit -> Uniquify -> Hiererchy. If you have clock in your design, you must assign Attributes->Clocks->Specify and Skew properties. Select Don t Touch Network in this window to avoid synthesis of clock tree (preferred). Set the period for your clock in this window. To set timing constraint, select input port and output port on which you want to set up the constraint. Click Attributes>Optimisation Constraints>Timing Constraints. A new window will pop up where you will see a From field which contains name of input port and a To field which contains output port name. If you fill maximum delay>rise 10 and select Same Rise and Fall, the synthesizer will set maximum delay of 10 ns for that path. It is equivalent to say set_max_delay 10 from InPort to OutPort in command window. Go through Attributes menu and see all available options. You can also specify drive strength for input ports, input/output delays, operating conditions etc. To specify the maximum area and maximum fanout constraint, select Attributes>Optimisation Constraints>Design Constraints. To see the critical path, use control-t. Select pins or ports and select Analysis- >Highlight to see related information. To check timing violations, 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. You can re-simulate your netlisted file to verify functionality of the synthesized design. ELEC4708: Lab 3 Tutorial (2) Bashir Morshed Page 8 of 8