Specifying Timing Exceptions

Similar documents
Multiple Clocks and Timing Exceptions

Agenda: Day Two. Unit 6: Specifying Timing Exceptions DAY 2. I/O Paths and Exceptions. Constraining I/O Interface Paths

Performing STA. Learning Objectives

Introduction to STA using PT

Design Rules and Min Timing

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

SmartTime for Libero SoC v11.5

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

Reading the Design into PT

Preparing for Optimization 7

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

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

Timing Constraints Editor User Guide

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

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

Graduate Institute of Electronics Engineering, NTU Synopsys Synthesis Overview

Using Tcl. Learning Objectives

Agenda: Day One 3-1 DAY. Welcome. Introduction to Static Timing Analysis. Writing Basic Tcl Constructs in PT. Constraining Internal Reg-Reg paths

Timing Analyzer Quick-Start Tutorial

Getting a Quick Start 2

Designing RGMII Interface with FPGA and HardCopy Devices

FishTail: The Formal Generation, Verification and Management of Golden Timing Constraints

Intel Quartus Prime Standard Edition User Guide

A STANDARDIZED PROCEDURE FOR CLOSING TIMING ON OpenHPSDR FPGA FIRMWARE DESIGNS

A GENERATION AHEAD SEMINAR SERIES

UG0776 User Guide PolarFire FPGA Design Constraints

Lecture 11 Logic Synthesis, Part 2

A Comparison of Hierarchical Compile Strategies

ProASIC PLUS Timing Closure in Libero IDE v5.2

Behavioral Modeling and Timing Constraints

Vivado Design Suite User Guide

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

Constraint Verification

TRILOBYTE SYSTEMS. Consistent Timing Constraints with PrimeTime. Steve Golson Trilobyte Systems.

Comparing Constraint Behavior to Determine Equivalency TAU Sonia Singhal Loa Mize Subramanyam Sripada Szu-Tsung Cheng Cho Moon

SDC and TimeQuest API Reference Manual

Push-button Synthesis or, Using dc_perl to do_the_right_thing

Vivado Design Suite Tutorial. Using Constraints

EECS 151/251A ASIC Lab 6: Power and Timing Verification

NetFPGA Summer Course

PrimeTime: Introduction to Static Timing Analysis Workshop

Using Synopsys Design Constraints (SDC) with Designer

My Second FPGA for Altera DE2-115 Board

11. Synopsys Design Compiler FPGA Support

Equivalence Checking for Timing Constraints Subramanyam Sripada March 6, 2014

Vivado Design Suite User Guide

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

Vivado Design Suite User Guide

Intel FPGA GPIO IP Core User Guide

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

8. Switching to the Quartus II TimeQuest Timing Analyzer

Graduate Institute of Electronics Engineering, NTU Synopsys Synthesis Overview

Setup file.synopsys_dc.setup

Timing Analysis in Xilinx ISE

VIVADO TUTORIAL- TIMING AND POWER ANALYSIS

Introduction to Design Compiler

CoreRGMII v2.0. Handbook

RTL Synthesis using Design Compiler. Dr Basel Halak

My First FPGA for Altera DE2-115 Board

SmartTime Static Timing Analyzer for Libero SoC v11.8 in the Enhanced Constraint Flow SmartFusion2, IGLOO2, and RTG4 User Guide

Tutorial for Verilog Synthesis Lab (Part 2)

Introduction to Design With Verilog. Synopsys University Courseware 2008 Synopsys, Inc. Lecture - 3 Developed By: Paul D. Franzon

Altera/Synopsys User Guide

ECE 5775 (Fall 17) High-Level Digital Design Automation. Binary Decision Diagrams Static Timing Analysis

The Formal Verification of Design Constraints by Ajay Daga, CEO, FishTail Design Automation Inc.

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

SmartTime Static Timing Analyzer User Guide SmartFusion2, IGLOO2, RTG4, and PolarFire

Intel Quartus Prime Standard Edition User Guide

Vivado Design Suite User Guide. Design Analysis and Closure Techniques

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

10. Synopsys Synplify Support

CME341 Assignment 4. module if\_else\_combinational\_logic( input [3:0] a, b, output reg [3:0] y ); * begin

My First Nios II for Altera DE2-115 Board

Part B. Dengxue Yan Washington University in St. Louis

LAB 5 Implementing an ALU

Logic Synthesis ( Prof. Dejan Marković VLSI Design Flow. Specifications & System Simulation (MATLAB, Simulink, C++)

Vivado Design Suite User Guide

Asic Design ET Alexander de Graaf, EEMCS/ME/CAS 5/20/14. Challenge the future. Delft University of Technology

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

Tcl and SDC Tutorial. PlanAhead Design Tool

ALTERA FPGA Design Using Verilog

HOW TO SYNTHESIZE VERILOG CODE USING RTL COMPILER

ALTERA FPGAs Architecture & Design

Partitioning for Better Synthesis Results

Design Space Exploration: Implementing a Convolution Filter

An easy to read reference is:

COMP12111 Fundamentals of Computer Engineering Paul Nutter Vasilis Pavlidis Comments

The Verilog Synthesis Process (v1.0) (According to the 470 GSIs)

Sequential Logic. Reminder: Lab #2 due Thursday Fall 2016 Lecture 4

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

Crosstalk Aware Static Timing Analysis Environment

INITIAL DESIGN CHECKS FLOW

Arbiters: Design Ideas and Coding Styles

Design Constraints User Guide

Chapter 5 Global Timing Constraints. Global Timing Constraints 5-1

Microtronix Video LVDS SerDes Transmitter / Receiver IP Core

The Boa Methodology. Abstract. What is Boa? by Wilson Snyder, Digital Semiconductor, January 17, 1997

EEL 4783: HDL in Digital System Design

1

ECE 353 Lab 4. MIDI Receiver in Verilog. Professor Daniel Holcomb UMass Amherst Fall 2016

Transcription:

Specifying Timing Exceptions Learning Objectives This lab is intended to give you a better understanding of how static timing analysis works and how timing exceptions are applied properly. After completing this lab, you should be able to: Fully constrain and analyze a design using as minimum a number of timing exceptions (set_max_delay, set_multicycle_path, set_false_path) as possible. 60 minutes UNIT Unit 6 Specifying Timing Exceptions 6-1 Synopsys 34000-000-S36

Getting Started The Unix directory for this entire lab is./lab6_exceptions. Answers and suggestions are located at the end of this lab. If you need help Use the lecture material, SOLD or the Quick Reference Guide. pt_shell> help report_tim* pt_shell> printvar *case_analys* pt_shell> create_generated_clock help pt_shell> man set_propagated_clock The history commands! pt_shell> history pt_shell>!26 You do not need to type the entire command or option names! pt_shell> report_timing cap tran pt_shell> list_attr app class clock 6-2 Specifying Timing Exceptions

Background The design you will be working with contains combinatorial snake paths as shown in the figure below (resets not shown). adr_i[15:0] coeff[15:0] Combinatorial Logic dout[31:0] sel_combo mul_result_reg Initial Analysis There are many different ways to define the constraints for this design; you will work through several scenarios to solve this problem. Task 1. Read Mapped Design 1. Change your current working directory to./lab6_exceptions and invoke pt_shell. 2. Read the compiled netlist into memory. read_db test.db current_design test link 3. Check the design s timing report. report_timing Question 1. Does anything appear unusual?... Specifying Timing Exceptions 6-3

Task 2. Constrain the Design for Timing There are no constraints set on the design; you need to apply a constraint script. The timing specifications for the design are as follows: Clock period: 200 MHz Input delays on data inputs (adr_i[*] and coeff[*]): 2 ns relative to system clock. Input delay on sel_combo: 0.35 ns relative to system clock Output delay: 4 ns relative to system clock 1. A constraint script with the above specification has been created for your use. Apply the constraint file my_constraints.tcl and check the constraints. source echo verbose my_constraints.tcl report_clock check_timing -verbose report_timing Question 2. How large is the worst negative slack?... Question 3. What path exhibits this violation?... 6-4 Specifying Timing Exceptions

Task 3. Using a Max-Delay Constraint The violation you just discovered is very large. There are two possibilities: either the violations are indeed large or the constraints specified were incorrect or insufficient. The propagation delay through the combinational path should be 10 ns or less. This means that the constraints have to be adjusted. Use the knowledge gained during the lecture. 1. Apply a max delay constraint on the combinational path. set_max_delay 10 from [get_ports coeff* adr_i* ] \ -to [all_outputs] Since set_max_delay is an exception, you should always make sure that the exception was actually applied correctly and that no exceptions were ignored. check_timing report_exceptions ignored 2. Generate another timing report. report_timing Question 4. Does the report seem more reasonable?... Question 5. Which path is the worst violator now?... Specifying Timing Exceptions 6-5

Task 4. Constrain Multicycle Path The path to the mul_result_reg actually takes 3 clock cycles instead of 1, (the default). Here again you can specify an exception. 1. Apply a multicycle path of 3 cycles to all paths that lead to mul_result_reg. set_multicycle_path 3 setup to mul_result_reg* Verify the exceptions were applied correctly: check_timing report_exceptions ignored 2. Add the above multicycle exception to your constraint file my_constraints.tcl. 3. Check the timing again: report_timing Question 6. Are there any timing violations in the report?... What just happened? It seems that you are again looking at the combinatorial input-output path that you were hoping to address earlier. Because the registerregister path had a larger violation, it replaced the combinatorial path with a worst negative slack of 5.65. After applying the multicycle constraint for the register-register path, you are back to the combinatorial path with a WNS of 5.35. Explanation for timing report result: PrimeTime considers the input and output delays that were previously specified on the ports as part of the max-delay constraint; you can see that in the timing report. The max-delay constraint number for the internal logic was reduced by the amount of external delay at the inputs and outputs. 6-6 Specifying Timing Exceptions

What do you learn from this? You generally do not want to mix input/output delay constraints (relative to a clock) with asynchronous max-delay constraints for the same endpoints! Conclusion: Since max-delay and input/output delays are not compatible, you have to come up with other solutions. Task 5. Use Virtual Clocks A max_delay constraint did not seem to solve the problem. Consider using a multicycle path for the combinatorial path, this action requires that you pay attention to the input and output delays and not mix them up. Try a completely different approach: virtual clocks. 1. Remove the max_delay constraint you applied earlier. reset_path from [get_ports coeff* adr_i* ] \ -to [all_outputs] 2. All that is really needed, is to apply a constraint to the combinatorial logic that is independent of the constraints that apply to the sequential logic paths. It would be nice to be able to constrain the snake path with regards to a different clock; this way multiple constraints can be overlayed without interfering with each other. The following schematic tries to illustrate the point: 0 ns v 0 ns 2 ns Combinatorial Logic v 4 ns mul_result_reg sel_combo Specifying Timing Exceptions 6-7

The diagram shows the design is now being clocked by two clocks, and v. Constrain the sequential path using, and the combinatorial path using v. The combinatorial path must have a delay of 10 ns or less. v will have a period of 10 ns and the input and output delays will be zero. 3. Perform the following commands in pt_shell and add them to your constraint script my_constraints.tcl: create_clock name v period 10 set_input_delay 0 clock v add_delay \ [get_ports coeff* adr_i* ] set_output_delay 0 clock v add_delay [all_outputs] 4. Make sure that the constraints are complete and analyze for timing: check_timing report_timing Question 7. What is the WNS now?... It seems that nothing really changed. Concentrate on the second timing report first, the report for the path group v. It shows that the launch clock is and the capture clock is v. This was not really planned, the idea was to have no overlap between the two constraints. 5. To solve the above problem you need to mask out the paths from to v and from v to : set_false_path from to v set_false_path from v to 6. Generate a report_timing. That takes care of the path from to v. Unfortunately you will notice that the original combinatorial constraint including the input and output delays are still being shown. The constraint with regard to is still constraining the snake path. Question 8. What would happen if you masked out that path using set_false_path from to?... 6-8 Specifying Timing Exceptions

Task 6. Refine Virtual Clock Definitions The constraint problem is nearly solved. You still need to completely isolate the sequential from the combinatorial paths. After specifying the required input and output delays you will mask out the non-relevant paths. The following schematic illustrates this point. 0 ns v_com 0 ns 2 ns Combinatorial Logic v_com 4 ns v_seq v_seq mul_result_reg sel_combo There are 3 clocks overall. Two clocks will be used to constrain the input and output ports, for the combinatorial and the sequential I/O paths. The third clock will be used for the internal register-register paths. 1. Indicate in the following table what clock combinations need to be marked as a false path: Launch Clock Capture Clock True / False v_com v_com v_com v_seq v_seq v_seq v_com v_seq v_com v_seq v_com v_seq See the Answer section for a solution. Specifying Timing Exceptions 6-9

If you are eager to see a solution and cannot wait, follow the directions under (a). If you want to complete your own script and add all the needed commands, follow (b). a. Reset the design and apply the solution script: reset_design source solution_a.tcl b. Open your constraints file my_constraints.tcl and add the missing commands. You need to define the two virtual clocks v_com and v_seq. You have to constrain the inputs and outputs with regard to the correct clock. Finally, you have to apply the set_false_path exceptions according to the table from above. See the Answer section for a solution script. 2. Generate a timing report. report_timing Question 9. Are the paths constrained correctly now? And do all paths meet setup timing?... 3. Check for all violations. report_constraint -all Question 10. Where did these hold violations suddenly come from?... 6-10 Specifying Timing Exceptions

Task 7. Back to the Multicycle Path The violations shown in the timing report are all rooted in the multicycle path you applied to the design earlier. By setting a multicycle path for setup at 3 cycles, the hold check capture edge was moved as well. 1. Perform timing analysis for hold. report_timing delay min Question 11. What edge is the hold check performed at for?... 2. Reset the hold capture edge to time 0. set_multicycle_path 2 hold to mul_result_reg* Question 12. Are all violations gone now?... Specifying Timing Exceptions 6-11

Answers For Lab 6 Task 1. Read Mapped Design Q 1. Does anything appear unusual? The design in not constrained for timing. The timing report only shows the longest path, but does not show any required arrival time information. Reading a db does not necessarily mean that you have a constrained design. Task 2. Constrain the Design for Timing Q 2. Q 3. How large is the worst negative slack? 10.35 ns. What path exhibits this violation? The path with the largest violation is the snake path from the input ports to the output ports. Task 3. Using a Max-Delay Constraint Q 4. Does the report seem more reasonable? Yes. The violation from earlier has disappeared. Q 5. Which path is the worst violator now? The worst violator now is an internal register-register path ending in mul_result_reg*. The worst negative slack is 5.65 ns. Task 4. Constrain Multicycle Path Q 6. Are there any timing violations in the report? Yes, the max_delay constraint did not do what you expected. 6-12 Specifying Timing Exceptions

Task 5. Use Virtual Clocks Q 7. What is the WNS now? 10.35 ns. Worst negative slack for the v path group is 6.35. Q 8. What would happen if you masked out that path using set_false_path from to? This is not a good idea. It would cause all the internal register-register paths to disappear as well. Task 6. Refine Virtual Clock Definitions Solution for step 1: Launch Clock Capture Clock True / False T v_com F v_seq T V_com F V_com v_com T V_com v_seq F V_seq T V_seq v_com F V_seq v_seq F Specifying Timing Exceptions 6-13

Solution for step 2a: set _period 5 set combo_delay 10 # Real existing clock create_clock -name -period $_period \ [get_ports ] # Define virtual dummy clock for regular in/out Constraining create_clock -name v_seq -period $_period # Define virtual dummy clock for combo-feedthru constraining create_clock -name v_com -period $combo_delay # Constraining for Combo-Feedthru I/O-Delay set_input_delay 0 -clock v_com \ [get_ports "adr_i* coeff*"] set_output_delay 0 -clock v_com [get_ports dout*] # These are the remaining I/O delays relevant for the paths that # start at an input port and end at internal registers and paths # that start at internal registers and end at output ports! set_input_delay 2 -clock v_seq -add_delay \ [remove_from_collection [all_inputs] [get_ports ]] set_output_delay 4 -clock v_seq -add_delay \ [all_outputs] # Constrain the reg-reg multicycle path set_multicycle_path 3 -setup -to mul_result_reg* # Mask out the non-relevant paths set_false_path -from -to v_com set_false_path -from v_com -to set_false_path -from v_com -to v_seq set_false_path -from v_seq -to v_com set_false_path -from v_seq -to v_seq 6-14 Specifying Timing Exceptions

Q 9. Are the paths constrained correctly now? And do all paths meet setup timing? Yes. All setup constraints are met. Q 10. Where do these hold violations suddenly come from? When the multicycle exception was applied to move the setup capture edge to the third, the hold capture edge moved as well. See your student guide for details. Task 7. Back to the Mylticycle Path Q 11. What edge is the hold check performed at for? 10 ns. Q 12. Are all violations gone now? Yes. Finally done. The End of Lab-6 Specifying Timing Exceptions 6-15