08 November

IO Interface Analysis: Constraints for IO pins on block level

We all know that all the input and output pins of a block must be constrained in order to enable the PnR tool to optimize those interface paths. How to constrain an input or output pin will be discussed in this article. We will also discuss what are the actual meanings of these constraints and how these constraints affect the timing analysis.


In the above figure, there are two timing paths shown, one is from CIN to FF1 and other is from FF2 to COUT. The path from CIN to FF1 is called input to register (In2Reg) path whereas the path from FF2 to COUT is called register to output (Reg2Out) path. Any timing paths which are related to an input and output pins is called Interface timing path.

Input Interface:




If we consider a block-level PnR implementation, the input to register path might be a part of the register to register path as shown in the above figure. Register FF11 is outside of the block but a part of the path from CIN to FF1 is inside the block. So in order to meet the timing of register to register path FF11 to FF1, we can divide this path into two parts. 



First part is the delay between the clock pin of FF11 to the input pin of block CIN and the second part is the delay from CIN pin to the D pin of FF1 as shown in the above figure. the first part is called input delay of the CIN pin. Since this path is out of the block so there is no timing information if this path can not be calculated by the tool. So we need to provide the delay of this part of the path as an input delay of pin CIN in SDC file. based on this input delay value PnR tool will estimate the timing margin from CIN to D pin of FF1 and optimize the path. On the block level, we need to close the timing from CIN to FF1 only that is Input to register path. 

For Example, 

    let's say the clock period is 1ns.

    And for setup analysis, the data required time for the path FF11 to FF1 is 850ps. 

    Suppose the maximum delay of the path from the clock pin of FF11 to CIN  is 550ps.

     Then on block-level, for setup analysis, we have to close the remaining path that is from CIN to FF1 at 850 - 550 = 300ps.

Input delay path has also two parts, one is clock to q dealy of FF11 and other is a combinational delay from q to CIN. This path will have max and min delay, which will be used separately in the setup and hold analysis. So when we apply input delay we apply two delays, max input delay and min input delay. The command for applying this delay in the SDC file is as follow.

Setting Input Delay:

create_clock -name RLCK -period 1 [get_ports RCLK]

set_input_delay -max 0.55 -clock RCLK [get_ports CIN]

set_input_delay -min 0.45 -clock RCLK [get_ports CIN]

The above set of SDC commands will set the maximum input delay of 550 ps and minimum input delay 450 ps to CIN input pin. We can understand this in a more simple way that data will be launched from the CIN pin after the input delay. So more input delay means lesser time available to reach the data to capture flop FF1. A similar logic is applicable for hold analysis too. 


Output Interface:





In block level, the register to output path from FF2 to COUT is a part of the complete path from FF2 to FF22 as shown in the above figure. Flip flop FF22 and the path from COUT to the FF22 is outside the block and this path can be supposed here a virtual path.



The path from FF2 to FF22 might be thought as two parts as shown in the above figure. part-1 is from FF2 to COUT which is inside the block and part-2 from COUT to FF22 which is outside the block and virtual here. Delay of part-2 path is called the output delay of the COUT pin. This delay is the combinational delay before the register FF22 and outside the block. This part will have a maximum and minimum delay which we need to specify while specifying the output delay for pin COUT.

For Example, 

    let's say the clock period is 1ns.

    And for setup analysis, the data required time for the path FF2 to FF22 is 800ps. 

    Suppose the max delay of the path-2  from COUT  to FF222 is 250ps.

     Then on block-level, for setup analysis, we have to close the remaining path from FF2 to COUT at 800 - 250 = 550ps.


In SDC file we specify maximum and minimum output delay, which is used separately for setup and hold analysis. The output delay is the delay from the output pin to the next register.  

Setting Output Delay:

create_clock -name RLCK -period 1 [get_ports RCLK]

set_output_delay -max 0.25 -clock RCLK [get_ports COUT]

set_output_delay -min 0.20 -clock RCLK [get_ports COUT]


The above set of SDC commands will set the maximum output delay of 250 ps and minimum input delay 200 ps to COUT output pin. We can imagine this like there is a virtual flop outside the block and the delay from COUT pin to that virtual flop is output delay of COUT pin. Here output delay has explained with reference to setup analysis but a similar concept is applicable for the hold analysis too. 


Thanks!

27 October

Module Constraint Types : Guide, Fence and Region

Sometimes we need to place a particular group of standard cells or modules in a particular area (box). PnR tools allow us to do that. If I talk particularly about Cadence Innovus APR tool, It has three types of regions called Guide, Fence and Region through which we can provide guidance to the placement tool. Let's explore what actually these three placement constraints do and what are the differences.

Guide: 

Guide

  • The guide is assigned with certain cells in the design
  • The guide allows to assigned cell sit outside the box
  • It also allows the other cells to sit inside the box
  • It is a soft constraint.

Innovus command:

createGuide obj_name box


Example: 

createGuide adder9 100.000 200.000 110.000 210.000

This is will create a guide for the module adder9 to the box (100 200 110 210)



Fence: 



  • The fence is assigned with certain cells in the design.
  • A fence does not allow the assigned cell to sit outside the box defined.
  • A fence does not allow the other cells to sit inside the box also. So the area is exclusively reserved for the assigned cells.
  • It is a hard constraint

Innovus command:

createFence obj_name box

Example: 

createFence SH12 200 400 220 440

This is will create a fence for the module SH12 to the box (200 400 220 440)

Region: 



  • The region is assigned with certain cells in the design.
  • A region does not allow the assigned cell to sit outside the box defined.
  • It may cause congestion in the area assigned if not chosen the area wisely.
  • The only difference between the region and fence is that it allows the other cells to sit inside the box. 
  • It is a hard constraint

Innovus command:

createRegion obj_name box

Example: 

createRegion SH7 200 400 220 440

This is will create a module guide in floorplan view with the status region for SH7 module to the box (200 400 220 440)

Delete module guide :

  • The delete the Guide / Fence / Region for the module use unplaceGuide command.

Example: 

unplaceGuide SH7 

This will delete the module guide for the SH7 module


13 October

Best 25 books on VLSI Design

In the previous article, Best 5 books have recommended for Physical Design Engineer. While writing that article it was very difficult to make many books out of the list. So I thought it will be better to write another article on the best 25 books for VLSI Design. This list starts from the basic level of books to the advance level of books. I have categories these books into 8 major categories. 


If you wish you buy any books, I have searched the bestseller, best edition and best price of these books and linked here. You can buy these books from these links through amazon. 



I. Basic Digital Electronics


1. Electronic Devices And Circuits Theory by Robert L. Boylestad 



The main content of this book is as follow:

  1. Semiconductor Diodes
  2. Diode applications
  3. Bipolar Junction Transistor
  4. DC Biasing - BJT
  5. BJT AC Analysis
  6. Field-Effect Transistors
  7. FET Biasing 
  8. FET amplifier
  9. BJT and JFET Frequency response
  10. Operational Amplifiers
  11. OP-Amp applications 
  12. Power Amplifiers
  13. Linear Digital ICs
  14. Feedback and Oscillator Circuits
  15. Power Supply (Voltage Regulators)
  16. Other Two Terminals Devices
  17. PNPN and other devices

2. Digital Design with an Introduction to the Verilog HDL by M. Morris Mano 



The main content of this book is as follow:
  1. Binary Systems
  2. Boolean Algebra and Logic Gates
  3. Simplification of Boolean Functions
  4. Combinational Logic
  5. MSI and PLD Components
  6. Synchronous Sequential Logic
  7. Registers, Counters and The Memory Units
  8. Algorithm State Machines (ASM)
  9. Asynchronous Sequential Logic
  10. Digital Integrated Circuits
  11. Laboratory Experiments
  12. Standard Graphics Symbols



II. Verilog HDL and SystemVerilog


3. Verilog HDL by Samir Palnitkar 


The main content of this book is as follow:

1 Overview of Digital Design with Verilog HDL 
2 Hierarchical Modeling Concepts 
3 Basic Concepts 
4 Modules and Ports 
5 Gate-Level Modeling 
6 Dataflow Modeling 
7 Behavioral Modeling 
8 Tasks and Functions 
9 Useful Modeling Techniques 
10 Timing and Delays 
11 Switch-Level Modeling 
12 User-Defined Primitives 
13 Programming Language Interface 
14 Logic Synthesis with Verilog HDL


4. FPGA Prototyping by Verilog Examples by Pong P. Chu 




The main content of this book is as follow:
  1. Gate-Level Combinational Circuits
  2. Overview of FPGA and EDA software
  3. RTL combinational circuit
  4. Regular Sequential Circuit
  5. FSM
  6. FSMD
  7. Selected Topics of Verilog
  8. UART
  9. PS2 Keyboard
  10. PS2 Mouse
  11. External SRAM
  12. Xilinx Spartan-3 Specific Memory
  13. VGA Controller -1: Graphics
  14. VGA Controller-II: Text
  15. PicoBlaze Overview
  16. PicoBlaze Assembly Code Development
  17. PicoBlaze I/O Interface
  18. PicoBlaze Interrupt Interface
  19. Simple Verilog Templates

5. SystemVerilog for Verification by Chris Spear 




The main content of this book is as follow:
  1. Verification Guidelines
  2. Data Types Procedural Statements and Routines
  3. Connecting the Testbench and Design
  4. Basic OOP
  5. Randomization Threads and Interprocess Communication
  6. Advanced OOP and Testbench Guidelines
  7. Functional Coverage
  8. Advanced Interfaces
  9. A Complete SystemVerilog Testbench
  10. Interfacing with C/C++

III. Semiconductor Devices


6. Solid State Electronic Devices by Streetman and Banerjee



7. VLSI Technology by S. M. SZE




8. The MOS Transistor by Yanish Tsividis







IV. Fabrication Technologies


9. The Science and Engineering of Microelectronic Fabrication by Stephen A Campbell 




9.a. Fundamental of Semiconductor Fabrication by S M SZE


The main content of this book is as follow:

  1. Introduction
  2. Crystal Growth
  3. Silicon Oxidation
  4. Photolithography
  5. Etching
  6. Diffusion
  7. Ion Implantation
  8. Film Deposition
  9. Process Integration
  10. IC Manufacturing
  11. Future Trends and Challenges


V. Analog Design


10. Design of Analog CMOS Integrated Circuits by Behzad Razavi



11. Microelectronic Circuit Theory and Application by Sedra and Smith



12. CMOS Circuit Design, Layout and Simulation by R. Jacob Baker



VI. Digital Design


13. CMOS Digital Integrated Circuit by Sung-Mo Kang and Yusuf Leblebici



14. Digital Integrated Circuit by Rabaey




15. CMOS VLSI Design by Neil H E Weste 




VII. Low Power Design


16. Low Power CMOS VLSI Circuit Design by Kaushik Roy 





17. Practical Low Power VLSI Design by Gary K. Yeap





VIII. Advance Books


18. Static Timing Analysis For Nanometer Design by J Bhaskar 




The main content of this book is as follow:

    1. CHAPTER 1: Introduction
    2. CHAPTER 2: STA Concepts
    3. CHAPTER 3: Standard Cell Library
    4. CHAPTER 4: Interconnect Parasitics
    5. CHAPTER 5: Delay Calculation
    6. CHAPTER 6: Crosstalk and Noise
    7. CHAPTER 7: Configuring the STA Environment
    8. CHAPTER 8: Timing Verification
    9. CHAPTER 9: Interface Analysis
    10. CHAPTER 10: Robust Verification

19. Constraining Design for Synthesis and Timing Analysis by Sridhar Gangadharan  


                        




20. Advance ASIC Chip Synthesis by Himanshu Bhatnagar 




The main content of this book is as follow:

  1. ASIC DESIGN METHODOLOGY TUTORIAL
  2. BASIC CONCEPTS
  3. SYNOPSYS TECHNOLOGY LIBRARY
  4. PARTITIONING AND CODING STYLES
  5. CONSTRAINING DESIGNS
  6. OPTIMIZING DESIGNS
  7. DESIGN FOR TEST
  8. LINKS TO LAYOUT & POST LAYOUT OPT
  9. PHYSICAL SYNTHESIS
  10. SDF GENERATION
  11. PRIMETIME BASICS
  12. STATIC TIMING ANALYSIS

21. Physical Design Essentials by Khosrow Golshan




The main content of this book is as follow:

Chapter 1: Libraries 
1.1 Standard Cells 1.4 Library Characterization
Chapter 2: Floorplanning
2.1 Technology File 2.3 Design Constraints
2.4 Design Planning
2.5 Pad Placement
2.6 Power Planning
2.7 Macro Placement
Chapter 3: Placement 
3.1 Global Placement 3.2 Detail Placement
3.3 Clock Tree Synthesis
3.4 Power Analysis
Chapter 4: Routing 
4.1 Special Routing
4.2 Global Routing
4.3 Detail Routing
4.4 Extraction
Chapter 5: Verification
5.1 Functional Verification 5.2 Timing Verification
5.3 Physical Verification
Chapter 6: Testing
6.1 Functional Test
6.2 Scan Test 6.3 Boundary Scan Test
6.4 Fault Detection
6.5 Parametric Test
6.8 Memory Test

22. Algorithm for VLSI Physical Design Automation by Naveed Sherwani






23. VLSI Design Methodology Development by Thomas Dillinger






24. Characterization and Modeling of Digital Circuits by Rohit Sharma







25. The Art of Timing Closure by Khosrow Golshan


        



Hope this article will help you to decide which are the best books available and which you need to read. 

Thank you!