Cdac NEW
Cdac NEW
LINTING
wire C0,C1,C2,C3,C4,C5,C6;
dff d2(.d(S[0]),.CLK(CLK),.rstn(rstn),.q(Q[0]));
dff d3(.d(S[1]),.CLK(CLK),.rstn(rstn),.q(Q[1]));
dff d4(.d(S[2]),.CLK(CLK),.rstn(rstn),.q(Q[2]));
dff d5(.d(S[3]),.CLK(CLK),.rstn(rstn),.q(Q[3]));
dff d6(.d(S[4]),.CLK(CLK),.rstn(rstn),.q(Q[4]));
dff d7(.d(S[5]),.CLK(CLK),.rstn(rstn),.q(Q[5]));
dff d8(.d(S[6]),.CLK(CLK),.rstn(rstn),.q(Q[6]));
dff d9(.d(S[7]),.CLK(CLK),.rstn(rstn),.q(Q[7]));
dff d10(.d(C7),.CLK(CLK),.rstn(rstn),.q(Q[8]));
endmodule
D Flip Flop :
module dff(input d,CLK,rstn,output reg q);
begin
if(!rstn)
q<=0;
else
q<=d;
end
endmodule
Full Adder :
module full_adder_d (
input a,b,cin,
output sum,carry);
endmodule
Half Adder:
module half_adder (input a,b,
output su,c);
assign su = a ^ b;
assign c = a & b;
endmodule
Linting process is done by jaspergold tool. Superlint, CDC
configurations , formal verification, x-propagation process are done
by jaspergold tool which waivers are added in add waivers option and
export as a waiver file.
LOGIC SYNTHESIS:
IO Pad Instantiation:
module Adder_8Bit(
A_pad,
B_pad,
CLK_pad,
rstn_pad,
Q_pad
);
pc3o05 pc3o05_1(.I(Q[8]),.PAD(Q_pad[8]));
pc3o05 pc3o05_2(.I(Q[7]),.PAD(Q_pad[7]));
pc3o05 pc3o05_3(.I(Q[6]),.PAD(Q_pad[6]));
pc3o05 pc3o05_4(.I(Q[5]),.PAD(Q_pad[5]));
pc3o05 pc3o05_5(.I(Q[4]),.PAD(Q_pad[4]));
pc3o05 pc3o05_6(.I(Q[3]),.PAD(Q_pad[3]));
pc3o05 pc3o05_7(.I(Q[2]),.PAD(Q_pad[2]));
pc3o05 pc3o05_8(.I(Q[1]),.PAD(Q_pad[1]));
pc3o05 pc3o05_9(.I(Q[0]),.PAD(Q_pad[0]));
half_adder HA0 (.a(A[0]), .b(B[0]),.su(S[0]),.c(C0));
full_adder_d FA1 (.a(A[1]),.b(B[1]),.cin(C0),.sum(S[1]),.carry(C1));
full_adder_d FA2 (.a(A[2]),.b(B[2]),.cin(C1),.sum(S[2]),.carry(C2));
full_adder_d FA3 (.a(A[3]),.b(B[3]),.cin(C2),.sum(S[3]),.carry(C3));
full_adder_d FA4 (.a(A[4]),.b(B[4]),.cin(C3),.sum(S[4]),.carry(C4));
full_adder_d FA5 (.a(A[5]),.b(B[5]),.cin(C4),.sum(S[5]),.carry(C5));
full_adder_d FA6 (.a(A[6]),.b(B[6]),.cin(C5),.sum(S[6]),.carry(C6));
full_adder_d FA7 (.a(A[7]),.b(B[7]),.cin(C6),.sum(S[7]),.carry(C7));
dff d2(.d(S[0]),.CLK(CLK),.rstn(rstn),.q(Q[0]));
dff d3(.d(S[1]),.CLK(CLK),.rstn(rstn),.q(Q[1]));
dff d4(.d(S[2]),.CLK(CLK),.rstn(rstn),.q(Q[2]));
dff d5(.d(S[3]),.CLK(CLK),.rstn(rstn),.q(Q[3]));
dff d6(.d(S[4]),.CLK(CLK),.rstn(rstn),.q(Q[4]));
dff d7(.d(S[5]),.CLK(CLK),.rstn(rstn),.q(Q[5]));
dff d8(.d(S[6]),.CLK(CLK),.rstn(rstn),.q(Q[6]));
dff d9(.d(S[7]),.CLK(CLK),.rstn(rstn),.q(Q[7]));
dff d10(.d(C7),.CLK(CLK),.rstn(rstn),.q(Q[8]));
endmodule
Constraint File Creation:
#Clock transition
set_clock_transition -rise -min $MINRISE [get_clocks CLK]
set_clock_transition -rise -max $MAXRISE [get_clocks CLK]
set_clock_transition -fall -min $MINRISE [get_clocks CLK]
set_clock_transition -fall -max $MAXRISE [get_clocks CLK]
#Input transition
set_input_transition -max $MAX_PORT [get_ports A_pad[7]]
set_input_transition -max $MAX_PORT [get_ports A_pad[6]]
set_input_transition -max $MAX_PORT [get_ports A_pad[5]]
set_input_transition -max $MAX_PORT [get_ports A_pad[4]]
set_input_transition -max $MAX_PORT [get_ports A_pad[3]]
set_input_transition -max $MAX_PORT [get_ports A_pad[2]]
set_input_transition -max $MAX_PORT [get_ports A_pad[1]]
set_input_transition -max $MAX_PORT [get_ports A_pad[0]]
set_input_transition -max $MAX_PORT [get_ports B_pad[7]]
set_input_transition -max $MAX_PORT [get_ports B_pad[6]]
set_input_transition -max $MAX_PORT [get_ports B_pad[5]]
set_input_transition -max $MAX_PORT [get_ports B_pad[4]]
set_input_transition -max $MAX_PORT [get_ports B_pad[3]]
set_input_transition -max $MAX_PORT [get_ports B_pad[2]]
set_input_transition -max $MAX_PORT [get_ports B_pad[1]]
set_input_transition -max $MAX_PORT [get_ports B_pad[0]]
# clock uncertainty
set_clock_uncertainty -setup $SKEW_setup [get_clocks CLK]
set_clock_uncertainty -hold $SKEW_hold [get_clocks CLK]
# Input transition
set_input_transition -max $MAX_PORT [get_ports rstn_pad]
set_input_transition -min $MIN_PORT [get_ports rstn_pad]
set_db / .information_level 7
###############################################################
## Library setup
###############################################################
set_db / .library {
/home/install/scl_pdk_v2/stdlib/fs120/liberty/lib_flow_ss/tsl18fs120_scl_ss.lib
/home/install/scl_pdk_v2/iolib/cio150/synopsys/2002.05/models/tsl18cio150_m
ax.lib
/home/install/scl_pdk_v2/stdlib/fs120/liberty/lib_flow_ff/tsl18fs120_scl_ff.lib
/home/install/scl_pdk_v2/iolib/cio150/synopsys/2002.05/models/tsl18cio150_m
in.lib}
#set_db / .lef_library {../lef/tsl18fs120_scl.lef}
read_libs -max_libs {
/home/install/scl_pdk_v2/stdlib/fs120/liberty/lib_flow_ss/tsl18fs120_scl_ss.lib
/home/install/scl_pdk_v2/iolib/cio150/synopsys/2002.05/models/tsl18cio150_m
ax.lib} \
-min_libs {
/home/install/scl_pdk_v2/stdlib/fs120/liberty/lib_flow_ff/tsl18fs120_scl_ff.lib
/home/install/scl_pdk_v2/iolib/cio150/synopsys/2002.05/models/tsl18cio150_m
in.lib}
#lib_cell_list gcnfnn1 gcnfnn2 gcnfnn4 gcnfnn7 gcnfnna gcnrnn1 gcnrnn2
gcnrnn4 gcnrnn7 gcnrnna mx08*
#set_dont_use lib_cell_lists [ gcnfnn1 gcnfnn2 gcnfnn4 gcnfnn7 gcnfnna
gcnrnn1 gcnrnn2 gcnrnn4 gcnrnn7 gcnrnna mx08*]
################################################################
####
## Load Design
################################################################
####
################################################################
####
## Constraints Setup
################################################################
####
read_sdc ./constraints/adder_constraints.sdc
path_adjust -from [all_inputs] -to [all_outputs] -delay -1300 -name PA_I2O
path_adjust -from [all_inputs] -to [all_register] -delay -1500 -name PA_I2C
path_adjust -from [all_register] -to [all_outputs] -delay -1500 -name PA_C2O
path_adjust -from [all_register] -to [all_register] -delay -1500 -name PA_C2C
report_timing -unconstrained
set_db timing_report_unconstrained true
#break
puts "The number of exceptions is [llength [vfind "design:$DESIGN" -
exception *]]"
if {![file exists ${_OUTPUTS_PATH}]} {
file mkdir ${_OUTPUTS_PATH}
puts "Creating directory ${_OUTPUTS_PATH}"
}
################################################################
####################################
## Synthesizing to generic
################################################################
####################################
################################################################
####################################
## Synthesizing to gates
################################################################
####################################
#################################
### write_do_lec
#################################
##################################################################################
#################
## CCOPT CONFIGRATION ##
##################################################################################
#################
##################################################################################
#################
##################################################################################
#################
##################################################################################
#################
##################################################################################
#################
##################################################################################
#################
##################################################################################
#################
setAnalysisMode -analysisType onChipVariation -cppr both
##################################################################################
#################
##################################################################################
#################
set_ccopt_property buffer_cells {bufbd1 bufbd2 bufbd3 bufbd4 bufbd7 bufbda bufbdf bufbdk}
setRouteMode -earlyGlobalMaxRouteLayer 4
##################################################################################
#################
## Define route types to binds a non-default routing rule, preferred routing layers, and shielding
## specification together.
##################################################################################
#################
##################################################################################
#################
## Specify that the route types defined above will be used for leaf, trunk, and top nets.
##################################################################################
#################
##################################################################################
#################
## Specify top routing rules will be used for any clock tree net with a transitive sink fanout count
##################################################################################
#################
#set_ccopt_property routing_top_min_fanout 1
##################################################################################
#################
## Specify top routing rules will be used for any clock tree net with a transitive sink fanout count
##################################################################################
#################
##################################################################################
#################
##
##################################################################################
#################
cts.tcl file:
##################################################################################
#################
##################################################################################
#################
set_global report_timing_format {instance arc net cell slew delay arrival required}
##################################################################################
#################
## To read cts configuration file and generate cts optimization specification file
## create_ccopt_clock_tree_spec: Creates a clock tree network with associated skew groups and
other
## clock tree synthesis (CTS) configuration settings such as ignore pins, case analysis, maxTrans,
## and so on based on a multi-mode timing configuration in the common timing engine (CTE).
## one skew group will be created for each SDC clock in each constraint mode.
##################################################################################
#################
source ./config.tcl
source ./ClockTreeSynthesis/${init_top_cell}_ccopt.spec
##################################################################################
#################
## set_ccopt_property :
## This command is used to set the values of various CCOpt object properties.
##################################################################################
#################
set_ccopt_property -delay_corner max_delay -net_type top target_max_trans 2
##################################################################################
#################
## source_driver : Specifies the library pin which is assumed to drive this clock
tree. By default this is generated from clock tree extraction.
##################################################################################
#################
##################################################################################
#################
## Innovus. CCOpt optimizes both the clock tree and the datapath to meet global timing constraints.
## -cts : Turns off clock concurrent optimization, and performs only clock tree synthesis (CTS)
## using the CCOpt engine. It does not perform any datapath optimization or useful
skew.
## Cluster mode : Physically implements the clock tree, but stops before performing any balancing
## Trial Mode : physically implements the clock tree and uses virtual delays to approximate how
## full CTS will balance clock trees, but does not perform any
optimization,
## Full Mode : A full CTS is performed with balance and optimized clock trees.
##################################################################################
#################
#ccopt_design
ccopt_design -cts
#ccopt_design
ccopt_design -cts
#ccopt_design
ccopt_design -cts
## report_ccopt_clock_trees: Reports a summary of all defined clock trees. This report provides a
## report_ccopt_skew_groups: Displays information about skew and insertion delay in skew groups.
##################################################################################
#################
saveDesign ./ClockTreeSynthesis/${init_top_cell}_CTS_ccopt.enc
cts.tcl and config file is not run properly. It shows the error.
The error is shown in the above picture. Please resolve this error and give a
suggestions to proceed next levl.
Virtual clock is assigned in constraint file which is match with skew group.
But CLK is declared as clock signal in RTL coding which is not match in
skew group. Please give a suggestions to make a correct constraint for pre
cts and post cts .