Hi all,
I am experiencing a small problem where Encounter detects setup violation but doesn't attempt to fix it. Following is the brief description of my problem reproduced on a very simple circuit.
For the simple circuit in above figure, following SDC constraints were applied. (dff are normal edge-triggered D-flipflops)
############### SDC file start
create_clock -name "clock1" -add -period 1.5 -waveform {0.0 0.75} [get_ports clk]
set_multicycle_path -from {dff1} -to {dff3} -setup 0
set_multicycle_path -from {dff2} -to {dff3} -setup 0
set_dont_touch [get_cells buf1]
############### SDC file end
Notice that for the "dff1 to dff3" path, setup check must be done on the first (rising) edge of their respective clocks. As such, encounter should advance the clock driving dff3 to meet setup violation at dff3.
However Encounter doesn't advance/skew the endpoint dff3 at all leading to a negative slack at the D input of dff3.
The "skewClock" command prints following warning.
"Analyzing useful skew ...
skewClock did not found any end points to delay or to advance."
The optimization commands before clock design used are as follows --
########################### CTS commands in encounter script
setOptMode -setupTargetSlack 0.05
setOptMode -usefulSkew true
setUsefulSkewMode -maxSkew true -ecoRoute true -noBoundary true -allNegEndPoints true
setCTSMode -opt true -optAddBuffer true
clockDesign
###########################
If there is any way we can get encounter to fix setup violation at dff3, it will be great
"Analyzing useful skew ...
skewClock did not found any end points to delay or to advance."
The optimization commands before clock design used are as follows --
########################### CTS commands in encounter script
setOptMode -setupTargetSlack 0.05
setOptMode -usefulSkew true
setUsefulSkewMode -maxSkew true -ecoRoute true -noBoundary true -allNegEndPoints true
setCTSMode -opt true -optAddBuffer true
clockDesign
###########################
If there is any way we can get encounter to fix setup violation at dff3, it will be great
Additional points to note. The circuit has plenty of area to add buffers and extra routing. There are no hold violations that restricts encounter from adding a buffer (hold slack is +1700ps whereas setup slack is -343ps)
The encounter version information:
@(#)CDS: Encounter v13.18-s012_1 (64bit) 02/20/2014 17:22 (Linux 2.6)
@(#)CDS: NanoRoute v13.17-s002 NR131126-2202/13_10-UB (database version 2.30, 190.4.1) {superthreading v1.19}
@(#)CDS: CeltIC v13.18-s009_1 (64bit) 02/18/2014 08:01:17 (Linux 2.6.18-194.el5)
@(#)CDS: AAE 13.18-s001 (64bit) 02/20/2014 (Linux 2.6.18-194.el5)
@(#)CDS: CTE 13.18-s006_1 (64bit) Feb 20 2014 10:26:27 (Linux 2.6.18-194.el5)
@(#)CDS: CPE v13.18-s007
@(#)CDS: IQRC/TQRC 12.1.1-s225 (64bit) Wed Jun 12 20:28:41 PDT 2013 (Linux 2.6.18-194.el5)
********************************************************************************************
Please let me know if you need any additional files to diagnose the issue.
Thanking in advance...
Niranjan