After completing the steps mentioned in the previous three parts, at this stage, there will be numerous VHDL files and synthesis report files. We haven't yet generated any schematic and so those files will not be present.
The important files to be looked at are the contraints report, timing report and area report. However, these reports include the use of signals and "objects" (by objects i mean the additional signals/gates/wires that Synergy has added in synthesizing the design). So it would be helpful to take a look at the netlist/schematic. Schematic is graphical and so it is much more easier to read than a netlist. However this may not be always true for very large designs where it may be impossible to look below modules.
Anyway, for understanding, first let me list the netlist generated
by Synergy:
package pack_example_behavior_syn is
function stdl_to_bit(oper : std_logic) return bit;
end pack_example_behavior_syn;
package body pack_example_behavior_syn is
function stdl_to_bit(oper : std_logic) return bit
is
begin
return(to_bit(oper));
end stdl_to_bit;
end pack_example_behavior_syn;
library ieee;
use ieee.std_logic_1164.all;
--------- Netlist Entity Declaration --------
entity example_struct is
port (
clock
: in std_logic;
a : in
std_logic;
b : in
std_logic;
sel :
in std_logic;
d : out
std_logic);
end example_struct;
--------- Netlist Architecture Body ---------
library xc4000e_syn;
use xc4000e_syn.xc4000e_syn_decl_pack.all;
architecture behavior_syn of example_struct is
signal w7 : std_logic;
signal w6 : std_logic;
signal w0 : std_logic;
signal w12 : std_logic;
signal w11 : std_logic;
signal w9 : std_logic;
signal w10 : std_logic;
signal w4 : std_logic;
signal w5 : std_logic;
signal w8 : std_logic;
signal w3 : std_logic;
signal w2 : std_logic;
signal w1 : std_logic;
begin
g12 : buff port map(
o => d, i => w3
);
g11 : buff port map(
o => w3, i => w7
);
g10 : buff port map(
o => w7, i => w6
);
g9 : buff port map(
o => w6, i => w0
);
g8 : buff port map(
o => w0, i => w12
);
g7 : buff port map(
o => w12, i => w11
);
g6 : buff port map(
o => w11, i => w5
);
g5 : inv port map(
o => w2, i => a
);
g4 : nor2 port map(
o => w9, i0 => sel,
i1 => b
);
g3 : nor2 port map(
o => w10, i0 => w9,
i1 => w2
);
g2 : and2 port map(
o => w4, i0 => sel,
i1 => b
);
g1 : or2 port map(
o => w1, i0 => w4,
i1 => w10
);
g0 : xgnd port map(
ground => w8
);
reg_w00000369 : fdc port map(
q => w5, c => clock,
clr => w8, d => w1
);
end behavior_syn;
--------- Envelope Architecture Body ---------
library ieee;
use ieee.std_logic_1164.all;
use work.pack_example_behavior_syn.all;
architecture behavior_syn of example is
component example_struct
port (
clock
: in std_logic;
a : in
std_logic;
b : in
std_logic;
sel :
in std_logic;
d : out
std_logic);
end component;
begin
vhs_m1 : example_struct
port map (
clock => to_stdulogic(clock),
a => to_stdulogic(a),
b => to_stdulogic(b),
sel => to_stdulogic(sel),
stdl_to_bit(d) => d);
end behavior_syn;
As this feature is right now being worked on, and as the example
is a simple one, I have pieced together the following figure illustrating
the various components used by Synergy. It is apparent that the circuit
will function as described in the VHDL description and so we are sure that
Synergy has done its task as far as the functionality is concerned.

Now let us look at the time report to correlate the time report with
the synthesized netlist:
Optimizer Timing Report Sorted by Arrival Time
Circuit: Work.example.behavior_syn
***********************************************
Time unit: 1ns. Precision:
10ps
***********************************************
Maximum Clock Frequency = 125.000 MHz
Longest Path Delay = 8.00 ns
***********************************************
Longest Path :
-----------------
StartPin Arr.Time
EndPin Arr.Time
Slack
--------------------------------------------------------------------------
sel
F( 47.00) w1
F( 50.00 ) 0.00
--------------------------------------------------------------------------
Shortest Path :
-----------------
StartPin Arr.Time
EndPin Arr.Time
Slack
--------------------------------------------------------------------------
clock
R( 0.00) d
F( 8.00 ) 1.00
--------------------------------------------------------------------------
************ Top 2 Longest Paths ************
Arrival Inc Fanout Load
Cell(pin to pin) Instance(wire to wire)
------------------------------ Long Critical Path 1 ---------------------------
All times for the path relative to rising edge of clock: clock
F( 47.00) 0.00 2 0.00
Input_pin sel
R( 48.00) 1.00 1 0.00
nor2(i0=>o) g4(sel=>w9)
F( 49.00) 1.00 1 0.00
nor2(i0=>o) g3(w9=>w10)
F( 50.00) 1.00 1 0.00
or2(i1=>o) g1(w10=>w1)
F( 50.00) 0.00
fdc(d)
reg_w00000369(w1)
The Slack Time of Long Critical Path 1 is 0.00 ns (Req. Time:clock|r|50.00 ns)
------------------------------ Long Critical Path 2 ---------------------------
All times for the path relative to rising edge of clock: clock
R( 0.00) 0.00 <-- clock
fdc(c)
reg_w00000369(clock)
F( 1.00) 1.00 1
0.00 fdc(c=>q)
reg_w00000369(clock=>w5)
F( 2.00) 1.00 1
0.00 buff(i=>o)
g6(w5=>w11)
F( 3.00) 1.00 1
0.00 buff(i=>o)
g7(w11=>w12)
F( 4.00) 1.00 1
0.00 buff(i=>o)
g8(w12=>w0)
F( 5.00) 1.00 1
0.00 buff(i=>o)
g9(w0=>w6)
F( 6.00) 1.00 1
0.00 buff(i=>o)
g10(w6=>w7)
F( 7.00) 1.00 1
0.00 buff(i=>o)
g11(w7=>w3)
F( 8.00) 1.00 1
0.00 buff(i=>o)
g12(w3=>d)
F( 8.00) 0.00
Output_pin d
The Slack Time of Long Critical Path 2 is -1.00 ns (Req. Time:clock|r|7.00
ns)
************ Top 2 Shortest Paths ***********
Arrival Inc Fanout Load
Cell(pin to pin) Instance(wire to wire)
------------------------------ Short Critical Path 1 --------------------------
All times for the path relative to rising edge of clock: clock
R( 0.00) 0.00 <-- clock
fdc(c)
reg_w00000369(clock)
F( 1.00) 1.00 1
0.00 fdc(c=>q)
reg_w00000369(clock=>w5)
F( 2.00) 1.00 1
0.00 buff(i=>o)
g6(w5=>w11)
F( 3.00) 1.00 1
0.00 buff(i=>o)
g7(w11=>w12)
F( 4.00) 1.00 1
0.00 buff(i=>o)
g8(w12=>w0)
F( 5.00) 1.00 1
0.00 buff(i=>o)
g9(w0=>w6)
F( 6.00) 1.00 1
0.00 buff(i=>o)
g10(w6=>w7)
F( 7.00) 1.00 1
0.00 buff(i=>o)
g11(w7=>w3)
F( 8.00) 1.00 1
0.00 buff(i=>o)
g12(w3=>d)
F( 8.00) 0.00
Output_pin d
The Slack Time of Short Critical Path 1 is 1.00 ns (Req. Time:clock|r|7.00 ns)
------------------------------ Short Critical Path 2 --------------------------
All times for the path relative to rising edge of clock: clock
F( 47.00) 0.00 2 0.00
Input_pin sel
F( 48.00) 1.00 1 0.00
and2(i0=>o) g2(sel=>w4)
F( 49.00) 1.00 1 0.00
or2(i0=>o) g1(w4=>w1)
F( 49.00) 0.00
fdc(d)
reg_w00000369(w1)
The Slack Time of Short Critical Path 2 is 49.00 ns (Req. Time:clock|r|0.00 ns)
***********************************************
Cadence Design Systems, Inc.
Optimizer Max-fanout File
Circuit: Work.example.behavior_syn
***********************************************
Violation Tolerance = 0.00
***********************************************
Total Maximum Load Violations = 0
Total Maximum Fanout Violations = 0
Total Maximum Transition Violations = 0
***********************************************
Maximum Load
***********************************************
Constraint Cell(pin)
Instance(wire) Library Actual
Viola Status
Value Value -tion
-------------------------------------------------------------------------------
Max load fdc(
q) reg_w00000369(w5 )
unspecified
Max load Input_pin
clock (clock )
unspecified <- clock signal
Max load xgnd(ground)
g0 (w8
) unspecified
Max load or2(
o) g1 (w1
) unspecified
Max load and2(
o) g2 (w4
) unspecified
Max load Input_pin
sel (sel )
unspecified
Max load Input_pin
b (b
) unspecified
Max load nor2(
o) g3 (w10
) unspecified
Max load nor2(
o) g4 (w9
) unspecified
Max load inv(
o) g5 (w2
) unspecified
Max load Input_pin
a (a
) unspecified
Max load buff(
o) g6 (w11
) unspecified
Max load buff(
o) g7 (w12
) unspecified
Max load buff(
o) g8 (w0
) unspecified
Max load buff(
o) g9 (w6
) unspecified
Max load buff(
o) g10 (w7
) unspecified
Max load buff(
o) g11 (w3
) unspecified
Max load buff(
o) g12 (d
) unspecified
***********************************************
Maximum Fanout
***********************************************
Constraint Cell(pin)
Instance(wire) Library Actual
Viola Status
Value Value -tion
-------------------------------------------------------------------------------
Max Fanout fdc(
q) reg_w00000369(w5 )
unspecified
Max Fanout Input_pin
clock (clock )
unspecified <- clock signal
Max Fanout xgnd(ground)
g0 (w8
) unspecified
Max Fanout or2(
o) g1 (w1
) unspecified
Max Fanout and2( o)
g2 (w4
) unspecified
Max Fanout Input_pin
sel (sel )
unspecified
Max Fanout Input_pin
b (b
) unspecified
Max Fanout nor2( o)
g3 (w10
) unspecified
Max Fanout nor2( o)
g4 (w9
) unspecified
Max Fanout inv(
o) g5 (w2
) unspecified
Max Fanout Input_pin
a (a
) unspecified
Max Fanout buff( o)
g6 (w11
) unspecified
Max Fanout buff( o)
g7 (w12
) unspecified
Max Fanout buff( o)
g8 (w0
) unspecified
Max Fanout buff( o)
g9 (w6
) unspecified
Max Fanout buff( o)
g10 (w7
) unspecified
Max Fanout buff( o)
g11 (w3
) unspecified
Max Fanout buff( o)
g12 (d
) unspecified
***********************************************
Maximum Transition
***********************************************
Constraint Cell(pin)
Instance(wire) Library Actual
Viola Status
Value Value -tion
-------------------------------------------------------------------------------
Max Trans. fdc(
q) reg_w00000369(w5 )
unspecified
Max Trans. Input_pin
clock (clock ) clock signal
Max Trans. xgnd(ground)
g0 (w8
) unspecified
Max Trans. or2(
o) g1 (w1
) unspecified
Max Trans. and2( o)
g2 (w4
) unspecified
Max Trans. Input_pin
sel (sel )
unspecified
Max Trans. Input_pin
b (b
) unspecified
Max Trans. nor2( o)
g3 (w10
) unspecified
Max Trans. nor2( o)
g4 (w9
) unspecified
Max Trans. inv(
o) g5 (w2
) unspecified
Max Trans. Input_pin
a (a
) unspecified
Max Trans. buff( o)
g6 (w11
) unspecified
Max Trans. buff( o)
g7 (w12
) unspecified
Max Trans. buff( o)
g8 (w0
) unspecified
Max Trans. buff( o)
g9 (w6
) unspecified
Max Trans. buff( o)
g10 (w7
) unspecified
Max Trans. buff( o)
g11 (w3
) unspecified
Max Trans. buff( o)
g12 (d
) unspecified
***********************************************
Cadence Design Systems, Inc.
Optimizer Constraint Report File
Circuit: Work.example.behavior_syn
***********************************************
Total Time Constraint Violations = 2
***********************************************
Cost Report
Circuit: Work.example.behavior_syn
***********************************************
Target_Value Actual_Value
Status
------------------------------------------------
unspecified 5.000
***********************************************
Timing Report
Circuit: Work.example.behavior_syn
Time unit: 1ns. Precision:
10ps
***********************************************
******* Required Time for Longest Paths *******
ID Constraint
Port Target_Value Actual_Value
Status
------------------------------------------------------------------------------
1 MaxRequiredRise
d clock|r| 7.00 clock|r|
8.00 Violated
2 MaxRequiredFall
d clock|r| 7.00 clock|r|
8.00 Violated
******* Required Time for Shortest Paths *******
ID Constraint
Port Target_Value Actual_Value
Status
------------------------------------------------------------------------------
3 MinRequiredRise
d clock|r| 7.00 clock|r|
8.00 Met
4 MinRequiredFall
d clock|r| 7.00 clock|r|
8.00 Met
***********************************************
Cadence Design Systems, Inc.
Optimizer Sequential Constraint Report File
Circuit: Work.example.behavior_syn
Time unit: 1ns. Precision:
10ps
***********************************************
Violation Tolerance = 0.00
***********************************************
Total Setup Violations = 0
Total Hold Violations = 0
Total Clock Width Violations = 0
***********************************************
Setup Violations
***********************************************
***********************************************
Hold Violations
***********************************************
***********************************************
Clock Width Violations (rising edge)
***********************************************
***********************************************
Clock Width Violations (falling edge)
***********************************************
Also notice that the path from sel to w1 is listed as a long critical path and it takes 3 ns for the signal to propagate. This gives me an important information that my signals a, b and sel should arrive much earlier than 3 ns than the rising edge of the clock if i want to ensure that the clock edge appears after my inputs have settled properly and can be used by the clock's positive edge.
Looking at the timing report, one can notice that there is a significant delay occuring due to the buffers. I can only assume that Synergy tried to meet my stringent timing constraint of 7 ns (remember that i had not provided any "window" for output timing requirement) and so put in buffers to try and meet my timing constraint (if you recall in Part - II of the tutorial, i had chosen "meet the minimum timing constraint" condition in the synthesis window).
So now I might want to go back and resynthesize if the 8ns is not acceptable. But before we go and do that, let me post the gate-count report:
***********************************************
Cadence Design Systems, Inc.
Netlist Statistics Report
Circuit: Work.example.behavior_syn
***********************************************
Total number of cells:
14
Total cell area:
5.00
Total number of inputs:
4
Total number of outputs:
1
Total number of inouts:
0
Total number of nets:
18
Total number of used pins:
33
Total number of unused pins:
0
Pins-per-net ratio:
1.83
Pin Distribution of Nets
========================
Number of 1 pin nets:
3
Number of 2 pin nets:
15
Cell Porosity Distribution
===========================
Model
Instances TotalTracks BlockedTracks
------------------------------------------------------------
and2
1 n/a
n/a
buff
7 n/a
n/a
fdc
1 n/a
n/a
inv
1 n/a
n/a
nor2
2 n/a
n/a
or2
1 n/a
n/a
xgnd
1 n/a
n/a
------------------------------------------------------------
Total 7
14 n/a
n/a
The above report is prettymuch self-apparent. Notice that right now at this stage of design, we are only interested in the model parts and the number of parts used (the rest such as unused pins, porosity, tracks etc. will be of importance during layout).
Now to meet my constraints, i can go back and modify the input timing constraints and also provide a "window" for the output timing constraints. I did not modify the input timing constraints (though it is apparent that it has to be more like -6 ns if i am to be absolutely sure). Instead, i changed the timing constraints so that the min rise/fall was 6ns and the max rise/fall was 7 ns.
The re-optimized netlist is listed below. If one tries to compare the netlist generated earlier with the netlist generated now, the number of buffers have been reduced. I could have chosen other optimization techniques (critical path resynthesis etc.) and explored the results.
--------- Netlist Entity Declaration --------
entity example_struct is
port (
clock
: in std_logic;
a : in
std_logic;
b : in
std_logic;
sel :
in std_logic;
d : out
std_logic);
end example_struct;
--------- Netlist Architecture Body ---------
library xc4000e_syn;
use xc4000e_syn.xc4000e_syn_decl_pack.all;
architecture behavior_syn of example_struct is
signal w8 : std_logic;
signal w2 : std_logic;
signal w6 : std_logic;
signal w5 : std_logic;
signal w7 : std_logic;
signal w3 : std_logic;
signal w9 : std_logic;
signal w10 : std_logic;
signal w4 : std_logic;
signal w0 : std_logic;
signal w1 : std_logic;
begin
g10 : buff port map(
o => d, i => w8
);
g9 : buff port map(
o => w8, i => w2
);
g8 : buff port map(
o => w2, i => w6
);
g7 : buff port map(
o => w6, i => w5
);
g6 : buff port map(
o => w5, i => w4
);
g5 : inv port map(
o => w7, i => a
);
g4 : nor2 port map(
o => w3, i0 => sel,
i1 => b
);
g3 : nor2 port map(
o => w9, i0 => w3,
i1 => w7
);
g2 : and2 port map(
o => w10, i0 => sel,
i1 => b
);
g1 : or2 port map(
o => w0, i0 => w10,
i1 => w9
);
g0 : xgnd port map(
ground => w1
);
reg_w00000369 : fdc port map(
q => w4, c => clock,
clr => w1, d => w0
);
end behavior_syn;
--------- Envelope Architecture Body ---------
library ieee;
use ieee.std_logic_1164.all;
use work.pack_example_behavior_syn.all;
architecture behavior_syn of example is
component example_struct
port (
clock
: in std_logic;
a : in
std_logic;
b : in
std_logic;
sel :
in std_logic;
d : out
std_logic);
end component;
begin
vhs_m1 : example_struct
port map (
clock => to_stdulogic(clock),
a => to_stdulogic(a),
b => to_stdulogic(b),
sel => to_stdulogic(sel),
stdl_to_bit(d) => d);
end behavior_syn;
Optimizer Timing Report Sorted by Arrival Time
Circuit: Work.example.behavior_syn
***********************************************
Time unit: 1ns. Precision:
10ps
***********************************************
Maximum Clock Frequency = 166.667 MHz
Longest Path Delay = 6.00 ns
***********************************************
Longest Path :
-----------------
StartPin Arr.Time
EndPin Arr.Time
Slack
--------------------------------------------------------------------------
sel
F( 47.00) w0
F( 50.00 ) 0.00
--------------------------------------------------------------------------
Shortest Path :
-----------------
StartPin Arr.Time
EndPin Arr.Time
Slack
--------------------------------------------------------------------------
clock
R( 0.00) d
F( 6.00 ) 1.00
--------------------------------------------------------------------------
************ Top 2 Longest Paths ************
Arrival Inc Fanout Load
Cell(pin to pin) Instance(wire to wire)
------------------------------ Long Critical Path 1 ---------------------------
All times for the path relative to rising edge of clock: clock
F( 47.00) 0.00 2 0.00
Input_pin sel
R( 48.00) 1.00 1 0.00
nor2(i0=>o) g4(sel=>w3)
F( 49.00) 1.00 1 0.00
nor2(i0=>o) g3(w3=>w9)
F( 50.00) 1.00 1 0.00
or2(i1=>o) g1(w9=>w0)
F( 50.00) 0.00
fdc(d)
reg_w00000369(w0)
The Slack Time of Long Critical Path 1 is 0.00 ns (Req. Time:clock|r|50.00 ns)
------------------------------ Long Critical Path 2 ---------------------------
All times for the path relative to rising edge of clock: clock
R( 0.00) 0.00 <-- clock
fdc(c)
reg_w00000369(clock)
F( 1.00) 1.00 1
0.00 fdc(c=>q)
reg_w00000369(clock=>w4)
F( 2.00) 1.00 1
0.00 buff(i=>o)
g6(w4=>w5)
F( 3.00) 1.00 1
0.00 buff(i=>o)
g7(w5=>w6)
F( 4.00) 1.00 1
0.00 buff(i=>o)
g8(w6=>w2)
F( 5.00) 1.00 1
0.00 buff(i=>o)
g9(w2=>w8)
F( 6.00) 1.00 1
0.00 buff(i=>o)
g10(w8=>d)
F( 6.00) 0.00
Output_pin d
The Slack Time of Long Critical Path 2 is 1.00 ns (Req.
Time:clock|r|7.00 ns)
************ Top 2 Shortest Paths ***********
Arrival Inc Fanout Load
Cell(pin to pin) Instance(wire to wire)
------------------------------ Short Critical Path 1 --------------------------
All times for the path relative to rising edge of clock: clock
R( 0.00) 0.00 <-- clock
fdc(c)
reg_w00000369(clock)
F( 1.00) 1.00 1
0.00 fdc(c=>q)
reg_w00000369(clock=>w4)
F( 2.00) 1.00 1
0.00 buff(i=>o)
g6(w4=>w5)
F( 3.00) 1.00 1
0.00 buff(i=>o)
g7(w5=>w6)
F( 4.00) 1.00 1
0.00 buff(i=>o)
g8(w6=>w2)
F( 5.00) 1.00 1
0.00 buff(i=>o)
g9(w2=>w8)
F( 6.00) 1.00 1
0.00 buff(i=>o)
g10(w8=>d)
F( 6.00) 0.00
Output_pin d
The Slack Time of Short Critical Path 1 is 1.00 ns (Req. Time:clock|r|5.00 ns)
------------------------------ Short Critical Path 2 --------------------------
All times for the path relative to rising edge of clock: clock
F( 47.00) 0.00 2 0.00
Input_pin sel
F( 48.00) 1.00 1 0.00
and2(i0=>o) g2(sel=>w10)
F( 49.00) 1.00 1 0.00
or2(i0=>o) g1(w10=>w0)
F( 49.00) 0.00
fdc(d)
reg_w00000369(w0)
The Slack Time of Short Critical Path 2 is 49.00 ns (Req. Time:clock|r|0.00
ns)
Optimizer Max-fanout File
Circuit: Work.example.behavior_syn
***********************************************
Violation Tolerance = 0.00
***********************************************
Total Maximum Load Violations = 0
Total Maximum Fanout Violations = 0
Total Maximum Transition Violations = 0
***********************************************
Maximum Load
***********************************************
Constraint Cell(pin) Instance(wire)
Library Actual Viola Status
Value Value -tion
-------------------------------------------------------------------------------
Max load fdc( q) reg_w00000369(w4
) unspecified
Max load Input_pin clock
(clock ) unspecified <- clock
signal
Max load xgnd(ground) g0
(w1 ) unspecified
Max load or2( o) g1
(w0 ) unspecified
Max load and2( o) g2
(w10 ) unspecified
Max load Input_pin sel
(sel ) unspecified
Max load Input_pin b
(b ) unspecified
Max load nor2( o) g3
(w9 ) unspecified
Max load nor2( o) g4
(w3 ) unspecified
Max load inv( o) g5
(w7 ) unspecified
Max load Input_pin a
(a ) unspecified
Max load buff( o) g6
(w5 ) unspecified
Max load buff( o) g7
(w6 ) unspecified
Max load buff( o) g8
(w2 ) unspecified
Max load buff( o) g9
(w8 ) unspecified
Max load buff( o) g10
(d ) unspecified
***********************************************
Maximum Fanout
***********************************************
Constraint Cell(pin) Instance(wire)
Library Actual Viola Status
Value Value -tion
-------------------------------------------------------------------------------
Max Fanout fdc( q) reg_w00000369(w4
) unspecified
Max Fanout Input_pin clock
(clock ) unspecified <- clock
signal
Max Fanout xgnd(ground) g0
(w1 ) unspecified
Max Fanout or2( o) g1
(w0 ) unspecified
Max Fanout and2( o) g2
(w10 ) unspecified
Max Fanout Input_pin sel
(sel ) unspecified
Max Fanout Input_pin b
(b ) unspecified
Max Fanout nor2( o) g3
(w9 ) unspecified
Max Fanout nor2( o) g4
(w3 ) unspecified
Max Fanout inv( o) g5
(w7 ) unspecified
Max Fanout Input_pin a
(a ) unspecified
Max Fanout buff( o) g6
(w5 ) unspecified
Max Fanout buff( o) g7
(w6 ) unspecified
Max Fanout buff( o) g8
(w2 ) unspecified
Max Fanout buff( o) g9
(w8 ) unspecified
Max Fanout buff( o) g10
(d ) unspecified
***********************************************
Maximum Transition
***********************************************
Constraint Cell(pin) Instance(wire)
Library Actual Viola Status
Value Value -tion
-------------------------------------------------------------------------------
Max Trans. fdc( q) reg_w00000369(w4
) unspecified
Max Trans. Input_pin clock
(clock ) clock signal
Max Trans. xgnd(ground) g0
(w1 ) unspecified
Max Trans. or2( o) g1
(w0 ) unspecified
Max Trans. and2( o) g2
(w10 ) unspecified
Max Trans. Input_pin sel
(sel ) unspecified
Max Trans. Input_pin b
(b ) unspecified
Max Trans. nor2( o) g3
(w9 ) unspecified
Max Trans. nor2( o) g4
(w3 ) unspecified
Max Trans. inv( o) g5
(w7 ) unspecified
Max Trans. Input_pin a
(a ) unspecified
Max Trans. buff( o) g6
(w5 ) unspecified
Max Trans. buff( o) g7
(w6 ) unspecified
Max Trans. buff( o) g8
(w2 ) unspecified
Max Trans. buff( o) g9
(w8 ) unspecified
Max Trans. buff( o) g10
(d ) unspecified
***********************************************
Cadence Design Systems, Inc.
Optimizer Constraint Report File
Circuit: Work.example.behavior_syn
***********************************************
Total Time Constraint Violations = 0
***********************************************
Cost Report
Circuit: Work.example.behavior_syn
***********************************************
Target_Value Actual_Value
Status
------------------------------------------------
unspecified 5.000
***********************************************
Timing Report
Circuit: Work.example.behavior_syn
Time unit: 1ns. Precision:
10ps
***********************************************
******* Required Time for Longest Paths *******
ID Constraint
Port Target_Value Actual_Value
Status
------------------------------------------------------------------------------
1 MaxRequiredRise
d clock|r| 7.00 clock|r|
6.00 Met
2 MaxRequiredFall
d clock|r| 7.00 clock|r|
6.00 Met
******* Required Time for Shortest Paths *******
ID Constraint
Port Target_Value Actual_Value
Status
------------------------------------------------------------------------------
3 MinRequiredRise
d clock|r| 5.00 clock|r|
6.00 Met
4 MinRequiredFall
d clock|r| 5.00 clock|r|
6.00 Met
***********************************************
Cadence Design Systems, Inc.
Optimizer Sequential Constraint Report File
Circuit: Work.example.behavior_syn
Time unit: 1ns. Precision:
10ps
***********************************************
Violation Tolerance = 0.00
***********************************************
Total Setup Violations = 0
Total Hold Violations = 0
Total Clock Width Violations = 0
***********************************************
Setup Violations
***********************************************
***********************************************
Hold Violations
***********************************************
***********************************************
Clock Width Violations (rising edge)
***********************************************
***********************************************
Clock Width Violations (falling edge)
***********************************************
Total number of nets:
16
Total number of used pins: 29
Total number of unused pins: 0
Pins-per-net ratio:
1.81
Pin Distribution of Nets
========================
Number of 1 pin nets:
3
Number of 2 pin nets:
13
Cell Porosity Distribution
===========================
Model
Instances TotalTracks BlockedTracks
------------------------------------------------------------
and2
1 n/a
n/a
buff
5 n/a
n/a
fdc
1 n/a
n/a
inv
1 n/a
n/a
nor2
2 n/a
n/a
or2
1 n/a
n/a
xgnd
1 n/a
n/a
------------------------------------------------------------
Total 7
12 n/a
n/a
This particular part of the tutorial is a bit confusing intially but please try to correlate the timing report and the constraints report with the schematic drawn. It will make it much more easier to understand the process.
It should be evident that the input timing constraints cannot be haphazardly provided as they play a crucial role in correct functioning of the circuit. Also, depending on the output constraints, the synthesizer may tend to generate a netlist accordingly. So providing constraints is a very crucial decision that can affect the entire synthesis process.
Though i have provided a very simple example, it is meant to understand the flow of design and to show some of the intricacies involved. I changed the output timing constraints by providing a window. Notice that i didn't go beyond 7 ns but just allowed the synthesis to have a tolerance in the output timing constraint. One can as well try various other options for constraints and synthesis to try and meet a specific goal.
Created by Tarak: March 1998.