You are on page 1of 48

ECE 545 Lecture 11

Logic Synthesis with Synopsys

ECE 545 Introduction to VHDL

George Mason University

Basic High-Level Design Flow

ECE 545 Introduction to VHDL

Logic Synthesis
VHDL description
architecture MLU_DATAFLOW of MLU is signal A1:STD_LOGIC; signal B1:STD_LOGIC; signal Y1:STD_LOGIC; signal MUX_0, MUX_1, MUX_2, MUX_3: STD_LOGIC; begin A1<=A when (NEG_A='0') else not A; B1<=B when (NEG_B='0') else not B; Y<=Y1 when (NEG_Y='0') else not Y1; MUX_0<=A1 and B1; MUX_1<=A1 or B1; MUX_2<=A1 xor B1; MUX_3<=A1 xnor B1; with (L1 & L0) select Y1<=MUX_0 when "00", MUX_1 when "01", MUX_2 when "10", MUX_3 when others; end MLU_DATAFLOW;

Circuit netlist

ECE 545 Introduction to VHDL

Basic Synthesis Flow

ECE 545 Introduction to VHDL

Synthesis using Design Compiler

ECE 545 Introduction to VHDL

ECE 545 Introduction to VHDL

ECE 545 Introduction to VHDL

Scripts

ECE 545 Introduction to VHDL

Synthesis script (1)


designer = "Pawel Chodowiec" company = "George Mason University" search_path = "./opt3/synopsys/TSMCHOME/digital/Front_End/timing_power/tcb013ghp_200a " link_library = "* tcb013ghptc.db" /* Typical case library */ target_library = "tcb013ghptc.db " symbol_library = "tcb013ghp.sdb "

/* Directory configuration */

src_directory = ~/exam1/vhdl/ report_directory = ~/exam1/reports/ db_directory = ~/exam1/db/

ECE 545 Introduction to VHDL

Synthesis script (2)


/* Packages can be only read */ read_file -format vhdl -rtl src_directory + "components.vhd" blocks = {regne, upcount, RAM_16Xn_DISTRIBUTED, exam1}

foreach (block, blocks) { block_source = src_directory + block + ".vhd" read_file -format vhdl -rtl block_source analyze -format vhdl -lib WORK block_source }
current_design block /* All commands now apply to the entity "exam1" */

ECE 545 Introduction to VHDL

10

Synthesis script (3)


uniquify /* Creates unique instances of multiple refrenced entities */

link check_design /* Checks the current design for consistency */


/*******************************************/ /* apply block attributes and constraints */ /*******************************************/ create_clock -period 10 clk /* Defines that the port "clk" on the entity "clk" is the clock for the design. Period=10ns 50% duty cycle Use -waveform option to define duty cycle other than 50%*/ set_operating_conditions NCCOM /*Normal Case Commercial Operating Conditions*/
ECE 545 Introduction to VHDL 11

Synthesis script (4)


/***************************************************/ /* Apply these constraints to the top-level entity*/ /***************************************************/ set_max_fanout 100 block set_clock_latency 0.1 find(clock, "clk") set_clock_transition 0.01 find(clock, "clk") set_clock_uncertainty -setup 0.1 find(clock, "clk") set_clock_uncertainty -hold 0.1 find(clock, "clk") set_load 0 all_outputs() set_input_delay 1.0 -clock clk -max all_inputs() set_output_delay -max 1.0 -clock clk all_outputs() set_wire_load_model -library tcb013ghptc -name "TSMC8K_Fsg_Conservative"

ECE 545 Introduction to VHDL

12

Wireload model basics (1)

ECE 545 Introduction to VHDL

13

Wireload model basics (2)

ECE 545 Introduction to VHDL

14

Synthesis script (5)


set_dont_touch block

compile -map_effort medium


change_names -rules vhdl vhdlout_architecture_name = "sort_syn" vhdlout_use_packages = {"IEEE.std_logic_1164"} write -f db -hierarchy -output db_directory + "exam1.db" /*write -f vhdl -hierarchy -output db_directory + "exam1_syn.vhd"*/ report -area > report_directory + "exam1.report_area" report -timing -all > report_directory + "exam1.report_timing"

ECE 545 Introduction to VHDL

15

Tips & Hints

ECE 545 Introduction to VHDL

16

Tips & Hints (1)


Each entity and each package should be placed in a different file.

The name of each file should be exactly the same as the name of an entity or package it contains. Arrange entity names in the bottom-up order (the top-most entity at the end of the list) and define this list in your script using the command
blocks = { entity1, entity2, , entityN}
ECE 545 Introduction to VHDL 17

Tips & Hints (2)


Use only one clock in your entire design.

Use an identical name for the clock signal in all your entities and packages (including declarations of components).
Use the same clock name in all clock-related commands of your script, such as create_clock, set_clock_transition, etc.

ECE 545 Introduction to VHDL

18

Tips & Hints (3)


Avoid advanced features, such as: multiple clocks, gated clocks, multicycle paths, circular feedback loops containing only combinational logic. Although these features are supported by Synopsys, their correct use requires additional knowledge and experience that are beyond the scope of ECE 545.

ECE 545 Introduction to VHDL

19

Tips & Hints (4)


Create a project directory in your main user directory.

Create the following subdirectories in the project directory:


db, docs, log, reports, scripts, tb, vhdl.

Place all your synthesizable source files in the vhdl directory, and your testbench files in the tb directory. Place your scripts in the script directory. Define at least the following directories close to the beginning of your script:
src_directory, report_directory, db_directory.
ECE 545 Introduction to VHDL 20

Tips & Hints (5)


Change your current directory to your log directory before you execute design_analyzer. After executing your script within design_analyzer, analyze the contents of log files generated in the directory log. These files contain the exact description of warnings and errors generated during synthesis.

Please do your best to eliminate all errors and majority of warnings generated by the scripts and written to the log files.
ECE 545 Introduction to VHDL 21

Results of synthesis

ECE 545 Introduction to VHDL

22

Area report after synthesis (1)


report_area Information: Updating design information... (UID-85) **************************************** Report : area Design : exam1 Version: V-2003.12-SP1 Date: Tue Nov 15 20:39:06 2005 **************************************** Library(s) Used:

tcb013ghptc (File: /opt3/synopsys/TSMCHOME/digital/Front_End/timing_power/ tcb013ghp_200a/tcb013ghptc.db)

ECE 545 Introduction to VHDL

23

Area report after synthesis (2)


Number of ports: Number of nets: Number of cells: Number of references: 75 346 107 28

Combinational area: 10593.477539 Noncombinational area: 14295.521484 Net Interconnect area: undefined (Wire load has zero net area)
Total cell area: Total area:
ECE 545 Introduction to VHDL

24888.976562 undefined
24

Critical Path (1)


Critical Path The Longest Path From Outputs of Registers to Inputs of Registers
t logic in out

clk

tCritical = tFF-P + tlogic + tFF-setup


ECE 545 Introduction to VHDL 25

Critical Path (2)


Min. Clock Period = Length of The Critical Path Max. Clock Frequency = 1 / Min. Clock Period

ECE 545 Introduction to VHDL

26

n+m n+m

ECE 545 Introduction to VHDL

27

Clock Jitter
Rising Edge of The Clock Does Not Occur Precisely Periodically
May cause faults in the circuit

clk

ECE 545 Introduction to VHDL

28

Clock Skew
Rising Edge of the Clock Does Not Arrive at Clock Inputs of All Flip-flops at The Same Time
in D Q D Q out

clk

delay

in

out

delay
ECE 545 Introduction to VHDL

clk

29

H-clock tree used to minimize clock skew

ECE 545 Introduction to VHDL

30

Timing report after synthesis (1)


**************************************** Report : timing -path full -delay max -max_paths 1 Design : exam1 Version: V-2003.12-SP1 Date : Tue Nov 15 20:39:06 2005 **************************************** Operating Conditions: NCCOM Library: tcb013ghptc Wire Load Model Mode: segmented

ECE 545 Introduction to VHDL

31

Timing report after synthesis (2)


Startpoint: in_addr(1) (input port clocked by clk) Endpoint: RegSUM/Q_reg[34] (rising edge-triggered flip-flop clocked by clk) Path Group: clk Path Type: max Des/Clust/Port Wire Load Model Library ----------------------------------------------------------------------------------exam1 TSMC8K_Fsg_Conservative tcb013ghptc RAM_16Xn_DISTRIBUTED ZeroWireload tcb013ghptc exam1_DW01_cmp2_32_0 ZeroWireload tcb013ghptc exam1_DW01_cmp2_32_1 ZeroWireload tcb013ghptc exam1_DW01_add_35_0 ZeroWireload tcb013ghptc regne_1 ZeroWireload tcb013ghptc regne_2 ZeroWireload tcb013ghptc regne_n35 ZeroWireload tcb013ghptc
ECE 545 Introduction to VHDL 32

Timing report after synthesis (3)


Point Incr Path -----------------------------------------------------------------------------------------------clock clk (rise edge) 0.00 0.00 clock network delay (ideal) 0.10 0.10 input external delay 1.00 1.10 f in_addr(1) (in) 0.00 1.10 f U98/Z (CKMUX2D1) 0.13 1.23 f Memory/ADDR[1] (RAM_16Xn_DISTRIBUTED) 0.00 1.23 f Memory/U41/ZN (INVD1) 0.08 1.31 r Memory/U343/Z (OR3D1) 0.10 1.41 r Memory/U338/ZN (INVD2) 0.20 1.61 f Memory/U40/ZN (MOAI22D0) 0.17 1.78 f Memory/U350/Z (OR4D1) 0.26 2.03 f Memory/DATA_OUT[0] (RAM_16Xn_DISTRIBUTED) 0.00 2.03 f
ECE 545 Introduction to VHDL 33

Timing report after synthesis (4)


add_96xplusxplus/B[0] (exam1_DW01_add_35_0) add_96xplusxplus/U9/Z (AN2D0) add_96xplusxplus/U1_1/CO (CMPE32D1) add_96xplusxplus/U1_2/CO (CMPE32D1) add_96xplusxplus/U1_3/CO (CMPE32D1) add_96xplusxplus/U1_4/CO (CMPE32D1) add_96xplusxplus/U1_5/CO (CMPE32D1) add_96xplusxplus/U1_6/CO (CMPE32D1) add_96xplusxplus/U1_7/CO (CMPE32D1) add_96xplusxplus/U1_8/CO (CMPE32D1) add_96xplusxplus/U1_9/CO (CMPE32D1) add_96xplusxplus/U1_10/CO (CMPE32D1) add_96xplusxplus/U1_11/CO (CMPE32D1) add_96xplusxplus/U1_12/CO (CMPE32D1) add_96xplusxplus/U1_13/CO (CMPE32D1) add_96xplusxplus/U1_14/CO (CMPE32D1)
ECE 545 Introduction to VHDL

0.00 0.12 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10

2.03 f 2.15 f 2.25 f 2.34 f 2.44 f 2.54 f 2.63 f 2.73 f 2.82 f 2.92 f 3.02 f 3.11 f 3.21 f 3.31 f 3.40 f 3.50 f
34

Timing report after synthesis (5)


add_96xplusxplus/U1_15/CO (CMPE32D1) add_96xplusxplus/U1_16/CO (CMPE32D1) add_96xplusxplus/U1_17/CO (CMPE32D1) add_96xplusxplus/U1_18/CO (CMPE32D1) add_96xplusxplus/U1_19/CO (CMPE32D1) add_96xplusxplus/U1_20/CO (CMPE32D1) add_96xplusxplus/U1_21/CO (CMPE32D1) add_96xplusxplus/U1_22/CO (CMPE32D1) add_96xplusxplus/U1_23/CO (CMPE32D1) add_96xplusxplus/U1_24/CO (CMPE32D1) add_96xplusxplus/U1_25/CO (CMPE32D1) add_96xplusxplus/U1_26/CO (CMPE32D1) add_96xplusxplus/U1_27/CO (CMPE32D1) add_96xplusxplus/U1_28/CO (CMPE32D1) add_96xplusxplus/U1_29/CO (CMPE32D1) add_96xplusxplus/U1_30/CO (CMPE32D1) add_96xplusxplus/U1_31/CO (CMPE32D1)
ECE 545 Introduction to VHDL

0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10

3.60 f 3.69 f 3.79 f 3.88 f 3.98 f 4.08 f 4.17 f 4.27 f 4.37 f 4.46 f 4.56 f 4.66 f 4.75 f 4.85 f 4.94 f 5.04 f 5.14 f
35

Timing report after synthesis (6)


add_96xplusxplus/U7/Z (AN2D0) 0.10 add_96xplusxplus/U5/Z (AN2D0) 0.08 add_96xplusxplus/U4/Z (CKXOR2D0) 0.15 add_96xplusxplus/SUM[34] (exam1_DW01_add_35_0) 0.00 RegSUM/R[34] (regne_n35) 0.00 RegSUM/U32/Z (AO21D0) 0.11 RegSUM/Q_reg[34]/D (EDFQD1) 0.00 data arrival time 5.24 f 5.32 f 5.47 f 5.47 f 5.47 f 5.57 f 5.57 f 5.57

ECE 545 Introduction to VHDL

36

Timing report after synthesis (7)


clock clk (rise edge) 10.00 10.00 clock network delay (ideal) 0.10 10.10 clock uncertainty -0.10 10.00 RegSUM/Q_reg[34]/CP (EDFQD1) 0.00 10.00 r library setup time -0.12 9.88 data required time 9.88 ------------------------------------------------------------------------------------data required time 9.88 data arrival time -5.57 ------------------------------------------------------------------------------------slack (MET) 4.31

ECE 545 Introduction to VHDL

37

Timing parameters

ECE 545 Introduction to VHDL

38

Timing parameters
definition delay time pointpoint rising edge rising edge of clock 1 clock period

units
ns ns MHz

pipelining

clock period
clock frequency

good good

latency

time inputoutput

ns

bad

throughput

#output bits/time unit

Mbits/s

good

ECE 545 Introduction to VHDL

39

Basic iterative architecture of the encryption/decryption unit

multiplexer

register round keys enc_dec combinational logic


one round

ECE 545 Introduction to VHDL

40

Basic iterative architecture: Timing


CLK
M1

M2
C1

M3

IN
C2

OUT
Latency k clock_period

ECE 545 Introduction to VHDL

41

Increasing throughput using pipelining

round 1

Throughput =
target clock period, e.g., 20 ns

...

block size target_clock_period

round 16

ECE 545 Introduction to VHDL

42

Optimization criteria

ECE 545 Introduction to VHDL

43

Degrees of freedom and possible trade-offs

speed

area

power

testability

ECE 545 Introduction to VHDL

44

Degrees of freedom and possible trade-offs


speed

latency area

throughput

ECE 545 Introduction to VHDL

45

Optimization methods

ECE 545 Introduction to VHDL

46

Speed optimization methods (1)


better architecture (e.g., CLA vs. ripple carry adder) pipelining parallel processing

optimization options of synthesis and implementation tools


ECE 545 Introduction to VHDL 47

Speed optimization methods (2)


reducing fanout of control signals better state encoding registered outputs from the state machine

ECE 545 Introduction to VHDL

48

You might also like