0% found this document useful (0 votes)
200 views21 pages

Logic Synthesis, Part 2: Xuan Silvia' Zhang

This document summarizes a lecture on logic synthesis, part 2. It discusses how to write synthesizable code, memory synthesis, and the design flow of logic synthesis using Synopsys Design Compiler. Key points include using meaningful names, avoiding mixed sensitivity, applying constraints, and specifying timing constraints using Synopsys Design Constraints (SDC). Technology library files like the db, sdb, and LEF files are also discussed. The next lab assignment involves implementing a dual-clock FIFO crossing different clock domains.

Uploaded by

srajece
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
200 views21 pages

Logic Synthesis, Part 2: Xuan Silvia' Zhang

This document summarizes a lecture on logic synthesis, part 2. It discusses how to write synthesizable code, memory synthesis, and the design flow of logic synthesis using Synopsys Design Compiler. Key points include using meaningful names, avoiding mixed sensitivity, applying constraints, and specifying timing constraints using Synopsys Design Constraints (SDC). Technology library files like the db, sdb, and LEF files are also discussed. The next lab assignment involves implementing a dual-clock FIFO crossing different clock domains.

Uploaded by

srajece
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 21

Lecture 11

Logic Synthesis, Part 2

Xuan ‘Silvia’ Zhang


Washington University in St. Louis

http://classes.engineering.wustl.edu/ese461/
Write Synthesizable Code

•  Use meaningful names for signals and variables


•  Don't mix level and edge sensitive elements in the same always
block
•  Avoid mixing positive and negative edge-triggered flip-flops
•  Use parentheses to optimize logic structure
•  Use continuous assign statements for simple combo logic
•  Use nonblocking for sequential and blocking for combo logic
•  Don't mix blocking and nonblocking assignments in the same
always block (even if Design compiler supports them!!).
•  Be careful with multiple assignments to the same variable
•  Define if-else or case statements explicitly

2
Memory Synthesis

•  Random logic using flip-flops or latches


–  use large vector or arrays in HDLs
–  inefficient in areas and performance
–  e.g.: a flip-flop takes up to 10 to 20 times area of a 6T
SRAM cell
•  Register files in datapaths
–  synthesized to a datapath component
–  dependent on software tool and technology
•  Memory compilers
–  most area-efficient and high-performance solution
–  foundry, tool, or 3rd party provider

3
Outline

Write Synthesizable Code

Write Synthesis Script

4
Design Flow of Synthesis

•  Set search paths and timing library


•  Load HDL file
•  Perform elaboration
•  Apply Constraints
•  Apply Optimization settings
•  Synthesis
•  Analysis for constraints
•  Export Design
•  Netlist and SDC

19
20
Design Flow of Synthesis

•  Set search paths


–  search_path
–  This is the search path for source files and also the the
technology library files
•  Use set command
–  set search_path <path>
–  where <path> is the full path of your target library,
script, or HDL file locations.
•  analyze
–  Will translates HDL to intermediate format
•  read_verilog
–  Will do the job of analyze and elaborate

21
Design Flow of Synthesis

•  Performing Elaboration
–  elaborate
–  Builds data structures
–  Infers registers and latches in the design
–  Performs high-level HDL optimization, such as dead code
removal
–  Checks semantics: meaning of sub blocks

22
Design Flow of Synthesis

•  Applying Constraints
•  The constraints include
–  Operating conditions
–  Clock waveforms
–  I/O timing
•  You can apply constraints in several ways
–  Type them manually in the RTL Compiler shell
–  Include a constraints file
–  Read in SDC constraints
•  Two types of constraint
–  Design Rule Check
–  Optimization Constraints

23
Design Flow of Synthesis

•  Applying Optimization Constraints


–  DRC
–  Timing
–  Power
–  Area
•  You can perform any of the following
optimizations
–  Remove designer-created hierarchies (ungrouping)
–  Create additional hierarchies (grouping)
–  Synthesize a sub-design
–  Create custom cost groups for paths in the design to
change the synthesis cost function

24
Design Flow of Synthesis

•  compile _ultra
–  Optimization on full design and complete
paths
–  Usually gives best optimization result
–  No iteration required
–  Simpler constraints
–  Simpler data management
–  More processing required
–  More memory required

11
Design Flow of Synthesis

•  Reports
–  Timing: any violation in the timing reports
leads to error. Usually solved by operating at
lower clock frequencies
–  Area: the rough cell area report before
making place and route
–  Power: depends on the operating conditions.
Some Technology libraries provide WCCOM
option for simulating at worst case conditions
–  Design: overview of the whole simulation in
DC compiler

12
Synopsys Design Constraints (SDC)

•  Specify the design intent, including the timing,


power, and area constraints for a design
•  SDC is Tcl based
•  Information in the SDC
–  The SDC version (optional)
–  The SDC units (optional)
–  The Design Constraints
–  Comments (optional)

27
Synopsys Design Constraints

•  SDC version:
–  Variable name: sdc_version
–  e.g.: set sdc_version 1.9
•  SDC Units
–  Command name: set_units
–  Specify units for capacitance, resistance, time,
voltage, current, and power
–  e.g.: set_units –capacitance 1pF
–  e.g.: set_units –time 1ns

28
Synopsys Design Constraints

29
Synopsys Design Constraints

30
Synopsys Design Constraints

31
Synopsys Design Constraints

•  create_clock
–  Name
–  Period
–  Waveform
–  [get_ports {}]
–  e.g.: create_clock –name “clk” –add –period 500.0 –
waveform {0, 250} [get_ports{clk}]

32
Technology Library files

•  db file
–  the actual information about the cells used in the
linking
•  sdb file
–  information about the symbols used for the cells in the
standard cell library
–  used in the process of P&R because we can see the
black boxes instead of the gate level logic.
•  LEF file
–  related to the P&R tools
–  layout exchange file which has information regarding
no of layers of metal used or available for P&R.

19
Lab #4: Dual-Clock FIFO

•  Due 10/19 (Wednesday)


•  Cross different clock domains
–  handshake signaling
–  asynchronous first-in-first-out buffer (FIFO)
•  FIFO
–  two interfaces
–  two clocks
–  one for write, one for read

20
Questions?

Comments?

Discussion?

21

You might also like