Skip to content

iaakash47/AdvanceSynthesis_using_DesignCompiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

AdvanceSynthesis_Using_DesignCompiler

Introduction

  • Synthesis is process of transferring higher level of abstraction (RTL) to implementable lower level of abstraction . It is the process of transforming RTL to gate-level netlist
  • Synthesis process can be optimized for speed(timing)/Area/Testability(DFT)/Power
  • Inputs : RTL,Technology Libraries,Constraints (Environment,clocks,IO Delays etc)
  • Outputs : Netlist,SDC,Reports etc
  • Synthesis is described as translation plus logic optimization plus mapping
  • Translation is performed during Reading the files
  • Logic optimization and mapping are performed by the compile command

Design Compiler(DC)

  • From Synopsys are the tool widely used for synthesis
  • Design Compiler® RTL synthesis solution enables users to meet today's design challenges with concurrent optimization of timing, area, power and test. Design Compiler includes innovative topographical technology that enables a predictable flow resulting in faster time to results. Topographical technology provides timing and area prediction within 10% of the results seen post-layout enabling designers to reduce costly iterations between synthesis and physical implementation. Design Compiler also includes a scalable infrastructure that delivers 2X faster runtime on quad-core platforms.

Benefits

  • Concurrent optimization of timing, area, power and test
  • Results correlate within 10% of physical implementation
  • Removes timing bottlenecks by creating fast critical paths
  • Gate-to-gate optimization for smaller area on new or legacy designs while maintaining timing Quality of Results (QoR)
  • Cross-probing between RTL, schematic, and timing reports for fast debug
  • Offers more flexibility for users to control optimization on specific areas of designs
  • Enables higher efficiency with integrated static timing analysis, test synthesis and power synthesis
  • Support for multi voltage and multi supply
  • 2X faster runtime on quad-core compute servers

Synopsys Design Constraints

SDC is a short form of “Synopsys Design Constraint”. SDC is a common format for constraining the design which is supported by almost all Synthesis, PnR and other tools. Generally, timing, power and area constraints of design are provided through the SDC file and this file has extension .sdc.

SDC file syntax is based on TCL format and all commands of sdc file follow the TCL syntax. In sdc file ‘#’ is used to comment a line and ” is used to break the line. SDC file can be generated by the synthesis tool and the same can be used in for PnR.

sdc1

Goals of Synthesis

  • To get a Gate Level Netlist
  • Inserting Clock Gates
  • Logic Optimization
  • Inserting DFT Logic
  • Logic Equivalence between RTL and Netlist should be maintained

Synthesis Flow

synthesisflow

Inputs and Outputs of Synthesis

  • Inputs : RTL,Technology Libraries,Constraints (Environment,clocks,IO Delays etc) and UPF
  • Outputs : Netlist,SDC,Reports, UPF etc

topographicalsynthesis

Design Compiler Environment Setup

$ mkdir DC_WORKSHOP 
$ git clone https://github.com/kunalg123/sky130RTLDesignAndSynthesisWorkshop.git

Loading DC_Shell

loading_dc_shell

Invoking Design Compiler

invoke_dc_shell

  • Lab1_flop_with_en.v

link_28nm

Lab1 db_file optimization

lab1 db_file optimization

Mapping_optimisation

mapping_optimisation

Delay Information

delay_info

Area Information

area_info

TCL Scipting

tcl_scripting

Invoking the Design Vision

read_verilog lab1_net_with_28_32 v read_lab1_net_sch

  • After Linking the Design with Library files and compiling the design with compile_ultra

lab1_net_with_en_sch lab1_net_with_28_32 v sch2

Basics of Static Timing Analysis

Static timing analysis (STA) is a method of validating the timing performance of a design by checking all possible paths for timing violations. STA breaks a design down into timing paths, calculates the signal propagation delay along each path, and checks for violations of timing constraints inside the design and at the input/output interface.

  • Timing Dot Library Exploring Dot Library Files

saed32hvt_tt0p85v25c lib1 saed32hvt_tt0p85v25c lib

  • saed32hvt_tt0p85v25c.lib IMG-20220713-WA0003 IMG-20220713-WA0002 (2) IMG-20220713-WA0001 (4)

Advanced Constraints

Major Design Rule Constraints

majordrc

Major Design Design Constraints

majordpc

  • Loading design get_cells, get_ports, get_nets

  • get_cells get_cell

  • get_ports get_port

  • get_nets get_pins

  • get_clocks clocks_pins

Creating Clock Waveform

my_clock 0 5

my_clk 15 20

0 5 clock

0 2 5 myclk

Clock Network Modelling - Uncertainty, report_timing

Uncertainty: It specifies a window within which a clock edge can occur. In physical design uncertainty will be used to model several factors like jitter (the deviation of clock edge from its ideal position), additional margins and skew (at pre-cts)

There will be different uncertainty values specified for setup and hold As hold check is performed with respect to same clock edge, any deviation in clock edge (jitter) will affect both launch and capture flop in same way. So for hold uncertainty no need to model jitter, this is the reason, why we always see less value for hold uncertainty compared to setup uncertainty. Before CTS, uncertainty will also models the expected skew after implementation of clock tree (post-cts). So, at post-cts stages we will reduce the uncertainty values as actual skew values are available. Setup Uncertainty:

Pre-Cts = Jitter + Skew + Extra setup margin

Cts = Jitter + Extra setup margin

Hold Uncertainty:

Pre-Cts = Skew + Extra hold margin

cts = Extra hold margin

  • MYCLK_MIN MYCLK_MIN

  • MYCLK_MET MYCLK(MET)

  • MYCLK_MAX MYCLK_MAX

Report_Timing

  • report_timing_IN_A report_timing_IN_A

  • report_timing -OUT -Y report_timing -OUT -Y

report_timing_REGC_reg/D report_timing_

IO Delays

read_ddc lab8_circuit ddc

lab8_circuit_full_sch

Optimizations

  • Optimizations 1 opt_check2 opt_check2_sch

  • Optimizations 2 opt_check4 opt_check4_sch

Resource sharing optimizations

resource_sjharing_multi_check resource_pic

  • compile_ultra -retime resource_opt

Sequential Optimizations

dff_const3_pic

dff_const3

dff_const1_pic

dff_const1

Boundary Optimizations
  • check_boundary_without_buffer check_boundary_without_buffer

  • check_boundary_with_iso_buffer check_boundary_with_iso_buffer

Isolating Path

iso1 iso2

  • Isolating Path with Buffer iso_buffer

  • GTK Wave GTK_wave

Multicycle path

set multipath_check

Report Timing

  • report_timing_min report_timing_min

  • report_timing_max report_timing_max

Check_timing, Check_design, Set_max_capacitance

  • Check_timing check_timing

  • Check_design check_design

  • Set Max Capcitance set_max_cap

read_verilog_en_128

  • lab8_modified

lab8_modified

  • Enable_128 in Design Vision

en_128

  • Schematic View en_128_sch

Contributor

Aakash.K
Contact:iaakashkrish@gmail.com

Kunal Ghosh, Co-founder, VSD Corp. Pvt. Ltd. - kunalpghosh@gmail.com

Acknowledgments

Kunal Ghosh, Co-founder, VSD Corp. Pvt. Ltd. - kunalpghosh@gmail.com

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published