The tcl script helps to control the EDA tools and automate the flow control. Now days every eda tools handles via tcl script even analoge design tools also.

1] Design Vision Compiler [DC ]

 

script 1

#/**************************************************/
#/* Compile Script for Synopsys */
#/* OSU FreePDK 45nm */
#/**************************************************/
file mkdir ../results/dc45
#/* All verilog files, separated by spaces */

#set fileFormat verilog ;# verilog or VHDL
#set fileFormat VHDL ;# verilog or VHDL

set my_hdl_files [list ../code/ ] # keep source files under code folder and specify each files separate with space 

#/* Top-level Module */
set my_toplevel xxxxxx

#/* The name of the clock pin. If no clock-pin */
#/* exists, pick anything */
set my_clock_pin clk
#create_clock -period 40 -waveform {0 20} -name clk

#/* Target frequency in MHz for optimization */
set my_clk_freq_MHz 50

#/* Delay of input signals (Clock-to-Q, Package etc.) */
set my_input_delay_ns 0.1

#/* Reserved time for output signals (Holdtime etc.) */
set my_output_delay_ns 0.1

#/**************************************************/
#/* No modifications needed below */
#/**************************************************/
set OSU_FREEPDK >> path to /osu_freepdk/lib/files
set search_path [concat $search_path $OSU_FREEPDK]
set alib_library_analysis_path $OSU_FREEPDK

set link_library [set target_library [concat [list gscl45nm.db] [list dw_foundation.sldb]]]
set target_library “gscl45nm.db”
define_design_lib WORK -path ../WORK
set verilogout_show_unconnected_pins “true”
set_ultra_optimization true
set_ultra_optimization -force

analyze -f vhdl $my_hdl_files
#analyze -f verilog $my_hdl_files

elaborate $my_toplevel

current_design $my_toplevel

link
uniquify

set my_period [expr 1000 / $my_clk_freq_MHz]

set find_clock [ find port [list $my_clock_pin] ]
if { $find_clock != [list] } {
set clk_name $my_clock_pin
create_clock -period $my_period $clk_name
} else {
set clk_name vclk
create_clock -period $my_period -name $clk_name
}

set_driving_cell -lib_cell INVX1 [all_inputs]
set_input_delay $my_input_delay_ns -clock $clk_name [remove_from_collection [all_inputs] $my_clock_pin]
set_output_delay $my_output_delay_ns -clock $clk_name [all_outputs]

compile -ungroup_all -map_effort medium

compile -incremental_mapping -map_effort medium

check_design
report_constraint -all_violators

set filename [format “%s%s” $my_toplevel “s45.v”]
write -f verilog -output ../results/dc45/$filename
write -f verilog -output ../enc/$filename

set filename [format “%s%s” $my_toplevel “s45.sdc”]
write_sdc ../results/dc45/$filename
write_sdc ../enc/$filename

redirect ../results/dc45/timing45.rep { report_timing }
redirect ../results/dc45/cell45.rep { report_cell }
redirect ../results/dc45/power45.rep { report_power }

redirect ../results/dc45/report_time45.txt {report_timing -path full -delay max -max_paths 1 -nworst 1}
redirect ../results/dc45/report_area45.txt {report_area}
redirect ../results/dc45/report_power45.txt {report_power}
exec cat ../results/dc45/report_area45.txt ../results/dc45/report_power45.txt ../results/dc45/report_time45.txt > ../results/dc45/report_all45.txt


script 2


#/**************************************************/
#/* Compile Script for Synopsys */
#/**************************************************/
file mkdir ../results/dc90
#/* All verilog files, separated by spaces */
#set fileFormat verilog ;# verilog or VHDL
#set fileFormat VHDL ;# verilog or VHDL

set my_hdl_files [list ../code/ ] # keep source files under code folder and specify each files separate with space 

#/* Top-level Module */
set my_toplevel xxxxxx

#/* The name of the clock pin. If no clock-pin */
#/* exists, pick anything */
set my_clock_pin clk
#create_clock -period 40 -waveform {0 20} -name clk

#/* Target frequency in MHz for optimization */
set my_clk_freq_MHz 50

#/* Delay of input signals (Clock-to-Q, Package etc.) */
set my_input_delay_ns 0.1

#/* Reserved time for output signals (Holdtime etc.) */
set my_output_delay_ns 0.1

#/**************************************************/
#/* No modifications needed below */
#/**************************************************/

set saed90 >> path to /90nm/models
set search_path ${saed90}
set link_library ${saed90}/saed90nm_typ_ht.db
set target_library ${saed90}/saed90nm_typ_ht.db
set symbol_library ${saed90}/saed90nm.sdb
set define_design_lib WORK -path ./WORK

alias h history
alias rc “report_constraint -all_violators”

set verilogout_show_unconnected_pins “true”
set_ultra_optimization true
set_ultra_optimization -force

analyze -f vhdl $my_hdl_files
#analyze -f verilog $my_hdl_files

elaborate $my_toplevel

current_design $my_toplevel

link
uniquify

set my_period [expr 1000 / $my_clk_freq_MHz]

set find_clock [ find port [list $my_clock_pin] ]
if { $find_clock != [list] } {
set clk_name $my_clock_pin
create_clock -period $my_period $clk_name
} else {
set clk_name vclk
create_clock -period $my_period -name $clk_name
}

set_driving_cell -lib_cell INVX1 [all_inputs]
set_input_delay $my_input_delay_ns -clock $clk_name [remove_from_collection [all_inputs] $my_clock_pin]
set_output_delay $my_output_delay_ns -clock $clk_name [all_outputs]

set_fix_hold clk

set_wire_load_mode “segmented”
set_max_area 0

compile -ungroup_all -map_effort medium

compile -incremental_mapping -map_effort medium

check_design
report_constraint -all_violators

set filename [format “%s%s” $my_toplevel “90.v”]
write -f verilog -output ../results/dc90/$filename
write -f verilog -output ../icc/$filename

set filename [format “%s%s” $my_toplevel “90.sdc”]
write_sdc ../results/dc90/$filename
write_sdc ../icc/$filename

redirect ../results/dc90/timing90.rep { report_timing }
redirect ../results/dc90/cell90.rep { report_cell }
redirect ../results/dc90/power90.rep { report_power }

redirect ../results/dc90/report_time90.txt {report_timing -path full -delay max -max_paths 1 -nworst 1}
redirect ../results/dc90/report_area90.txt {report_area}
redirect ../results/dc90/report_power90.txt {report_power}
exec cat ../results/dc90/report_area90.txt ../results/dc90/report_power90.txt ../results/dc90/report_time90.txt > ../results/dc90/report_all90.txt


Here two script is given you can refer any one and edit the path, top module name according to your requirement, it is template of script.

 2] rc-compiler


##this tells the compiler where to look for the libraries

set_attribute lib_search_path  >>path>>/libfortech/osu_freepdk/lib/files

## This defines the libraries to use

set_attribute library {gscl45nm.lib}

##This must point to your VHDL/verilog file
## CHANGE THIS LINE to your VHDL/verilog file name,

file mkdir ../results/rtl

read_hdl -vhdl [list ../code/xxxxx.vhd]

set my_toplevel xxxxx

## This buils the general block
elaborate

##this allows you to define a clock and the maximum allowable delays
#set clock [define_clock -period 300 -name clk]
#external delay -input 300 -edge rise clk
#external delay -output 2000 -edge rise p1

ungroup -all -flatten
##This synthesizes your code
#synthesize -to_mapped
synthesize -effort low -to_mapped

## This writes all your files
## change the tst to the name of your top level verilog

set filename [format “%s%s” $my_toplevel “rc.vh”]
##write_sdc ../results/dc45/$filename

write -mapped > ../results/rtl/$filename
write -mapped > /Cadence/CMOSedu/all_vh_files/$filename
write -mapped > ../enc/$filename

write_script > ../results/rtl/script

set filename [format “%s%s” $my_toplevel “rc.sdc”]

write_sdc > ../results/rtl/$filename
write_sdc > ../enc/$filename

set filename [format “%s%s” $my_toplevel “_ref_power_rc45.txt”]
build_rtl_power_models -clean_up_netlist
report power -rtl_cross_reference > ../results/rtl/$filename
set filename [format “%s%s” $my_toplevel “_hierarchy_power_rc45.txt”]
report power -rtl -flat > ../results/rtl/$filename
set filename [format “%s%s” $my_toplevel “_area_rc45.txt”]
report area -rtl -flat > ../results/rtl/$filename
set filename [format “%s%s” $my_toplevel “_timing_rc45.txt”]
report timing > ../results/rtl/$filename


3] IC compiler [icc]


set saed90 /path>>/90nm/models
set search_path ${saed90}
set link_library ${saed90}/saed90nm_typ_ht.db
set target_library ${saed90}/saed90nm_typ_ht.db
set symbol_library ${saed90}/saed90nm.sdb
set define_design_lib WORK -path ./WORK
alias h history
alias rc “report_constraint -all_violators”

file mkdir ../results/icc

set my_toplevel xxxxx

# ——– defination.tcl

create_mw_lib -technology /path>> /90nm/techfiles/saed90nm_icc_1p9m.tf \
-mw_reference_library {/path >> /90nm/saed90nm_fr } \
-hier_separator {/} \
-bus_naming_style {[%d]} \
-open ../results/icc/COUNT

set_tlu_plus_files -max_tluplus /path>> /90nm/tluplus/saed90nm_1p9m_1t_Cmax.tluplus \
-min_tluplus /path>> /90nm/tluplus/saed90nm_1p9m_1t_Cmin.tluplus \
-tech2itf_map /path>> /90nm/tluplus/tech2itf.map

set filename [format “%s%s” $my_toplevel “90.v”]
read_verilog -cell $my_toplevel ../icc/$filename

# -allow_undefined_module
#import_designs -format verilog \
# -top $my_toplevel \
# -cel $my_toplevel {../results/enc90/fsmdemo190.v}

set filename [format “%s%s” $my_toplevel “90.sdc”]
source ../icc/$filename

# ——– degsineall.tcl

# ## FLOORPLAN
# ################################################################
initialize_floorplan -core_utilization 0.33 -start_first_row -flip_first_row -left_io2core 1 -bottom_io2core 1 -right_io2core 1 -top_io2core 1

current_design $my_toplevel

set power “VDD”
set ground “VSS”
set powerPort “VDD”
set groundPort “VSS”
set mw_logic0_net “VSS”
set mw_logic1_net “VDD”

# DEFINING POWER/GROUND NETS AND PINS
derive_pg_connection -power_net VDD \
-ground_net VSS \
-power_pin VDD \
-ground_pin VSS

##//CREATING POWER RECTANGULAR RING

create_rectangular_rings -nets {VDD VSS} -left_offset 0.2 -left_segment_layer M4 -right_offset 0.2 -right_segment_layer M4 -bottom_offset 0.2 -bottom_segment_layer M3 -extend_bh -top_offset 0.2 -top_segment_layer M3

create_power_straps -direction horizontal -nets {VDD} -layer M4 -configure groups_and_step -num_groups 28 -step 3
create_power_straps -direction horizontal -start_at 1.5 -nets {VSS} -layer M4 -configure groups_and_step -num_groups 28 -step 3
create_power_straps -direction vertical -nets {VDD} -layer M3 -configure groups_and_step -num_groups 28 -step 3
create_power_straps -direction vertical -start_at 1.5 -nets {VSS} -layer M3 -configure groups_and_step -num_groups 28 -step 3

puts “start_place”

## This should be changed back once we figure out how to deal with read_def!!!!
## place_opt -effort high -optimize_dft -congestion
place_opt -effort high -continue_on_missing_scandef -congestion

legalize_placement -effort high -incremental

set_fix_multiple_port_nets -all -buffer_constants

## This should be changed back once we figure out how to deal with read_def!!!!
## place_opt -effort high -optimize_dft -congestion
place_opt -effort high -continue_on_missing_scandef -congestion

legalize_placement -effort high -incremental

preroute_standard_cells -nets VSS -connect horizontal
preroute_standard_cells -nets VDD -connect horizontal

verify_pg_nets -pad_pin_connection all
save_mw_cel

puts “finish_place”

puts “start_cts”

check_legality

set_clock_tree_options -clock_trees clk \
-insert_boundary_cell true \
-ocv_clustering true \
-buffer_relocation true \
-buffer_sizing true \
-gate_relocation true \
-gate_sizing true \
-delay_insertion true

set cts_use_debug_mode true
set cts_do_characterization true

puts “stdcell_filler”

clock_opt -fix_hold_all_clocks

# DEFINING POWER/GROUND NETS AND PINS
derive_pg_connection -power_net VDD \
-ground_net VSS \
-power_pin VDD \
-ground_pin VSS

preroute_standard_cells -nets VSS -connect horizontal
preroute_standard_cells -nets VDD -connect horizontal

verify_pg_nets
verify_pg_nets -pad_pin_connection all

save_mw_cel

puts “finish_cts”

puts “start_route”

check_routeability

set_delay_calculation -arnoldi

set_net_routing_layer_constraints \
-max_layer_name M5 -min_layer_name M1 {*}

set_si_options -route_xtalk_prevention true\
-delta_delay true \
-min_delta_delay true \
-static_noise true\
-max_transition_mode normal_slew \
-timing_window true

set_route_options -groute_timing_driven true \
-groute_incremental true \
-track_assign_timing_driven true \
-same_net_notch check_and_fix

route_opt -effort high \
-stage global \
-incremental

save_mw_cel

route_opt -effort high \
-stage track \
-xtalk_reduction \
-optimize_wire_via \
-incremental

save_mw_cel

verify_route

insert_redundant_vias -auto_mode insert

insert_stdcell_filler -cell_without_metal SHFILL1 \
-connect_to_power VDD -connect_to_ground VSS

insert_stdcell_filler -cell_without_metal SHFILL2 \
-connect_to_power VDD -connect_to_ground VSS

insert_well_filler -layer NWELL \
-higher_edge max -lower_edge min

preroute_standard_cells -nets VDD -connect horizontal
preroute_standard_cells -nets VSS -connect horizontal

verify_pg_nets
verify_pg_nets -pad_pin_connection all

route_search_repair -loop 500 -rerun_drc

save_mw_cel

puts “finish_route”

close_mw_cel
close_mw_lib
set_mw_lib_reference -mw_reference_library {/path>> /90nm/saed90nm_fr} ../results/icc/COUNT/
open_mw_lib ../results/icc/COUNT
set ::auto_restore_mw_cel_lib_setup false
open_mw_cel $my_toplevel

set_write_stream_options -map_layer /path>> /90nm/saed90nm.gdsout.map \
-output_filling fill \
-child_depth 20 \
-output_outdated_fill \
-output_pin {text geometry}
write_stream -lib ../results/icc/COUNT\
-format gds\
-cells $my_toplevel\
../results/icc/$my_toplevel.gds

extract_rc

write_parasitics -output ../results/icc/$my_toplevel.spef
write_verilog -pg -no_physical_only_cells ../results/icc/$my_toplevel.v1
write_verilog -no_physical_only_cells ../results/icc/$my_toplevel.v


4] Encounter 


encounter_rc.conf

##########################################
# FirstEncounter Input configuration file #
################################################
# Specify the name of your toplevel module
set my_toplevel xxxx

################################################
# No changes required below
################################################

global env
set OSU_FREEPDK /path>> /osu_freepdk/
#set OSU_FREEPDK $env(OSU_FREEPDK)

global rda_Input

set filename [format “%s%s” $my_toplevel “rc.vh”]
set rda_Input(ui_netlist) ../enc/$filename
set filename [format “%s%s” $my_toplevel “rc.sdc”]
set rda_Input(ui_timingcon_file) ../enc/$filename
set rda_Input(ui_topcell) $my_toplevel

set rda_Input(ui_netlisttype) {Verilog}
set rda_Input(ui_ilmlist) {}
set rda_Input(ui_settop) {1}
set rda_Input(ui_celllib) {}
set rda_Input(ui_iolib) {}
set rda_Input(ui_areaiolib) {}
set rda_Input(ui_blklib) {}
set rda_Input(ui_kboxlib) “”
set rda_Input(ui_timelib) “$OSU_FREEPDK/lib/files/gscl45nm.tlf”
set rda_Input(ui_smodDef) {}
set rda_Input(ui_smodData) {}
set rda_Input(ui_dpath) {}
set rda_Input(ui_tech_file) {}
set rda_Input(ui_io_file) “”
set rda_Input(ui_buf_footprint) {buf}
set rda_Input(ui_delay_footprint) {buf}
set rda_Input(ui_inv_footprint) {inv}
set rda_Input(ui_leffile) “$OSU_FREEPDK/lib/files/gscl45nm.lef”
set rda_Input(ui_core_cntl) {aspect}
set rda_Input(ui_aspect_ratio) {1.0}
set rda_Input(ui_core_util) {0.7}
set rda_Input(ui_core_height) {}
set rda_Input(ui_core_width) {}
set rda_Input(ui_core_to_left) {}
set rda_Input(ui_core_to_right) {}
set rda_Input(ui_core_to_top) {}
set rda_Input(ui_core_to_bottom) {}
set rda_Input(ui_max_io_height) {0}
set rda_Input(ui_row_height) {}
set rda_Input(ui_isHorTrackHalfPitch) {0}
set rda_Input(ui_isVerTrackHalfPitch) {1}
set rda_Input(ui_ioOri) {R0}
set rda_Input(ui_isOrigCenter) {0}
set rda_Input(ui_exc_net) {}
set rda_Input(ui_delay_limit) {1000}
set rda_Input(ui_net_delay) {1000.0ps}
set rda_Input(ui_net_load) {0.5pf}
set rda_Input(ui_in_tran_delay) {120.0ps}
set rda_Input(ui_captbl_file) {}
set rda_Input(ui_cap_scale) {1.0}
set rda_Input(ui_xcap_scale) {1.0}
set rda_Input(ui_res_scale) {1.0}
set rda_Input(ui_shr_scale) {1.0}
set rda_Input(ui_time_unit) {none}
set rda_Input(ui_cap_unit) {}
set rda_Input(ui_sigstormlib) {}
set rda_Input(ui_cdb_file) {}
set rda_Input(ui_echo_file) {}
set rda_Input(ui_qxtech_file) {}
set rda_Input(ui_qxlib_file) {}
set rda_Input(ui_qxconf_file) {}
set rda_Input(ui_pwrnet) {vdd}
set rda_Input(ui_gndnet) {gnd}
set rda_Input(flip_first) {1}
set rda_Input(double_back) {1}
set rda_Input(assign_buffer) {0}
set rda_Input(ui_pg_connections) [list \
{PIN:vdd:} \
{PIN:gnd:} \
]
set rda_Input(PIN:vdd:) {vdd}
set rda_Input(PIN:gnd:) {gnd}


encounter_rc.tcl


###################################
# Run the design through Encounter
###################################

# Setup design and create floorplan
loadConfig ../enc/encounter_rc.conf
#commitConfig

file mkdir ../results/enc

set my_toplevel xxxx

# Create Initial Floorplan
floorplan -r 1.0 0.6 20 20 20 20

# Create Power structures
addRing -spacing_bottom 5 -width_left 5 -width_bottom 5 -width_top 5 -spacing_top 5 -layer_bottom metal5 -width_right 5 -around core -center 1 -layer_top metal5 -spacing_right 5 -spacing_left 5 -layer_right metal6 -layer_left metal6 -nets { gnd vdd }

# Place standard cells
amoebaPlace

# Route power nets
sroute -noBlockPins -noPadRings

# Perform trial route and get initial timing results
trialroute
#buildTimingGraph
#setCteReport
#reportTA -nworst 10 -net > ../results/enctiming.rep.1.placed

# Run in-place optimization
# to fix setup problems
#setIPOMode -mediumEffort -fixDRC -addPortAsNeeded
#initECO ./ipo1.txt
#fixSetupViolation
#endECO

#buildTimingGraph
#setCteReport
#reportTA -nworst 10 -net > ../results/enctiming.rep.2.ipo1

# Run Clock Tree Synthesis
createClockTreeSpec -output ../results/enc/encounter.cts -bufFootprint buf -invFootprint inv
specifyClockTree -clkfile ../results/enc/encounter.cts
ckSynthesis -rguide ../results/enc/cts.rguide -report ../results/enc/report.ctsrpt -macromodel ../results/enc/report.ctsmdl -fix_added_buffers

# Output Results of CTS
trialRoute -highEffort -guide ../results/enc/cts.rguide
extractRC
reportClockTree -postRoute -localSkew -report ../results/enc/skew.post_troute_local.ctsrpt
reportClockTree -postRoute -report ../results/enc/report.post_troute.ctsrpt

# Run Post-CTS Timing analysis
setAnalysisMode -setup -async -skew -autoDetectClockTree
#buildTimingGraph
#setCteReport
#reportTA -nworst 10 -net > ../results/enctiming.rep.3.cts

# Perform post-CTS IPO
#setIPOMode -highEffort -fixDrc -addPortAsNeeded -incrTrialRoute -restruct -topomap
initECO ../results/enc/ipo2.txt
setExtractRCMode -default -assumeMetFill
extractRC
fixSetupViolation -guide ../results/enc/cts.rguide

# Fix all remaining violations
setExtractRCMode -detail -assumeMetFill
extractRC
if {[isDRVClean -maxTran -maxCap -maxFanout] != 1} {
fixDRCViolation -maxTran -maxCap -maxFanout
}

endECO
cleanupECO

# Run Post IPO-2 timing analysis
#buildTimingGraph
#setCteReport
#reportTA -nworst 10 -net > ../results/enctiming.rep.4.ipo2

# Add filler cells
addFiller -cell FILL -prefix FILL -fillBoundary

# Connect all new cells to VDD/GND
globalNetConnect vdd -type tiehi
globalNetConnect vdd -type pgpin -pin vdd -override

globalNetConnect gnd -type tielo
globalNetConnect gnd -type pgpin -pin gnd -override

# Run global Routing
globalDetailRoute

# Get final timing results
setExtractRCMode -detail -noReduce
extractRC
#buildTimingGraph
#setCteReport
#reportTA -nworst 10 -net > ../results/enctiming.rep.5.final

clearClockDomains
setClockDomains -all
timeDesign -reportOnly -idealClock -pathReports -drvReports -slackReports -numPaths 50 -prefix $my_toplevel -outDir ../results/enc/timingReports

# Output GDSII
streamOut ../results/enc/final.gds2 -mapFile /path>> /osu_freepdk/lib/files/gds2_encounter.map -stripes 1 -units 1000 -mode ALL
streamOut ../results/enc/fdm -mapFile ../results/enc/streamOut.map -libName DesignLib -structureName $my_toplevel -units 2000 -mode ALL
saveNetlist -excludeLeafCell ../results/enc/final.v

# Output DSPF RC Data
rcout -spf ../results/enc/final.dspf

# Run DRC and Connection checks
verifyGeometry
verifyConnectivity -type all

win

puts “**************************************”
puts “* Encounter script finished *”
puts “* Type ‘exit’ to quit *”
puts “* *”
puts “**************************************”


4] Prime Time [pt]


Synopsys PrimeTime is a software tool used for static timing analysis of integrated circuits. A PrimeTime script is a series of commands written in Tcl (Tool Command Language) or in PrimeTime’s proprietary language, PTSL (PrimeTime Scripting Language), that automate the various steps of the static timing analysis process. Here is an example PrimeTime script that performs basic timing analysis on a design:

# Start PrimeTime and read in design and library files
primeTime -file design.v -lib library.lib

# Specify timing constraints
set_input_delay -clock clk -max 1.0
set_output_delay -clock clk -max 1.0
set_clock_uncertainty 0.1

# Analyze timing
report_checks -verbose -path_delay min -path_type full

# Generate timing reports
report_timing -delay_type max -slack_less_than 0.1 -group_endpoints
report_power -toggle

This script first starts PrimeTime and reads in the design file “design.v” and the library file “library.lib”. It then specifies timing constraints for the clock input and output signals, as well as the clock uncertainty. Next, it analyzes the timing of the design and generates a report of timing checks. Finally, it generates timing and power reports based on the specified constraints and settings.


####################
# SETUP #
####################

#1.
set sh_enable_page_mode true

#2.
set search_path {. ./../designs}
set link_path {* ./../libs/tut_lib.db}

#3.
read_verilog ex1_design.v

#4.
link_design

####################
# CONSTRAIN #
####################

#1. check the design’s timing
check_timing

#2. 50% duty cycle, 150Mhz get
create_clock -period 6.666 -name CLK [get_ports clk1]

#3.
set_clock_latency 2.0 CLK

#4.
set_input_delay 2.0 -clock CLK [get_ports in*]
set_output_delay 1.0 -clock CLK [all_outputs]

#5.
report_clock -skew
report_port -input_delay
report_port -output_delay
check_timing

####################
# ENV ATTRIBUTES #
####################

#1.
set_driving_cell -lib_cell IV [all_inputs]

#2.
set_load -pin_load 1 [all_outputs]

#3.
set_wire_load_model -name 10Kgates

#4.
set_operating_conditions -library tut_lib -analysis_type single TYPICAL

####################
# REPORT ON DESIGN #
####################

#1.
report_design

#2.
report_hierarchy

#3.
report_net

#4.
report_cell

#5.
report_reference

#6.
report_clock

####################
# REPORT TIMING #
####################

#1.
report_timing

#2.
report_timing -nets -transition_time -capacitance

#3.
report_timing -nworst 10 -path_type summary

#4.
report_timing -nworst 10 -path_type summary -to [all_outputs]

#5.
report_timing -nworst 10 -path_type summary -from g*/CP -to g*/D

####################
# CLEANUP #
####################

#1.
remove_design -all

#2.
remove_lib -all


5] VCS synopsys

# Set the Verilog source files and libraries

set SRCS {module1.v module2.v}

set LIBS {lib1.v lib2.v}

# Set the VCS compilation flags and defines

set VCS_FLAGS “-sverilog -full64 -debug +define+DEFINE1=1 +define+DEFINE2=0”

# Set the simulation options and defines

set SIM_FLAGS “+access+r +access+rw +define+SIMULATION=1 +define+TESTBENCH=\”tb_top\””

# Compile the Verilog files with VCS

vcs $VCS_FLAGS $SRCS $LIBS

# Run the simulation with VCS

simv $SIM_FLAGS

# Generate the waveform database file

vcd2wlf trace.vcd trace.wlf

# View the waveform using the VCS waveform viewer

dve -vpd trace.wlf

==================================================

chmod +x run_sim.tcl

vcs -full64 –debug < run_sim.tcl

==================================================

This Tcl script file sets the Verilog source files and libraries in the SRCS and LIBS variables, respectively. It then sets the VCS compilation flags and defines in the VCS_FLAGS variable and sets the simulation options and defines in the SIM_FLAGS variable. It then compiles the Verilog files with VCS and runs the simulation with the compiled executable. After the simulation is complete, it generates a waveform database file using vcd2wlf and opens it with the VCS waveform viewer dve.

You can customize this Tcl script file by modifying the SRCS, LIBS, VCS_FLAGS, and SIM_FLAGS variables to match your Verilog project. You can then save it as a Tcl script file with a “.tcl” extension and run it using the terminal:

Make sure to give execute permissions to the Tcl script file before running it:

==================================================

makefile and configuration file

A makefile is a script that automates the build process of a project. It describes how to build, test and package a software application. The makefile is written in a special syntax and executed by the make utility. Here is an example of a makefile for a Verilog project using VCS:

################

# Set the default target
all: sim

# Define the source files and libraries
SRCS = module1.v module2.v
LIBS = lib1.v lib2.v

# Define the simulation executable
sim: $(SRCS) $(LIBS)
vcs -sverilog $(SRCS) $(LIBS)

# Define a cleanup target
clean:
rm -rf simv csrc *.log

##########

This makefile defines three targets:

  • all: This is the default target that builds the simulation executable.
  • sim: This target builds the simulation executable using VCS.
  • clean: This target removes all the simulation files.

To use this makefile, save it as “Makefile” in the root directory of your Verilog project and run the “make” command in the terminal.

A configuration file for VCS is used to customize the simulation settings, such as the compiler flags, simulation options, and waveforms. The VCS configuration file has a “.conf” extension and is passed as an argument to the “vcs” command. Here is an example of a VCS configuration file:

#################

# Set the compilation flags
-v2005 # Use SystemVerilog 2005 syntax
-full64 # Generate 64-bit code
-debug # Enable debug information
+define+DEBUG=1 # Define a macro

# Set the simulation options
+access+r # Allow read access to the simulation hierarchy
+access+rw # Allow read and write access to the simulation hierarchy
+define+SIMULATION=1 # Define a macro

# Set the waveform settings
-wdb trace.wdb # Set the waveform database filename

###############

To use this configuration file, save it as “vcs.conf” in the root directory of your Verilog project and pass it as an argument to the “vcs” command:

vcs -sverilog -f filelist.txt -f vcs.conf
In this example, the “filelist.txt” contains a list of Verilog source files to be compiled and simulated. The “-f” option is used to specify a file containing a list of files to be used as input.

6] NCLAUNCH


# Set the Verilog source files and libraries
set SRCS {module1.v module2.v}
set LIBS {lib1.v lib2.v}

# Set the ncelab compilation flags and defines
set NCELAB_FLAGS “-64bit -access +rwc +define+DEFINE1=1 +define+DEFINE2=0”

# Set the simulation options and defines
set SIM_FLAGS “+access+r +access+rw +define+SIMULATION=1 +define+TESTBENCH=\”tb_top\””

# Compile and elaborate the Verilog files with ncelab
ncelab $NCELAB_FLAGS $SRCS $LIBS

# Create the log file
set LOG_FILE “sim.log”
nclog open -a $LOG_FILE

# Run the simulation with ncsim
ncsim $SIM_FLAGS testbench

# Generate the waveform database file
vcd2wlf trace.vcd trace.wlf

# View the waveform using the nWave waveform viewer
nWave -vpd trace.wlf

# Close the log file
nclog close

This Tcl script file sets the Verilog source files and libraries in the SRCS and LIBS variables, respectively. It then sets the ncelab compilation flags and defines in the NCELAB_FLAGS variable and sets the simulation options and defines in the SIM_FLAGS variable. It then compiles and elaborates the Verilog files with ncelab and creates a log file with nclog. After the simulation is complete, it generates a waveform database file using vcd2wlf and opens it with the nWave waveform viewer. Finally, it closes the log file with nclog.

You can customize this Tcl script file by modifying the SRCS, LIBS, NCELAB_FLAGS, SIM_FLAGS, and LOG_FILE variables to match your Verilog project. You can then save it as a Tcl script file with a “.tcl” extension and run it using the terminal:

nclaunch –input run_sim.tcl

Make sure to give execute permissions to the Tcl script file before running it:

chmod +x run_sim.tcl


 

Please edit the path and top module name, also take care of the files location, this is template edit according to your requirements.

Will update more tcl script here,

Comments are wel-come

 

By admin

647 thoughts on “EDA tool tcl script”
  1. Incredible, blog yang hebat! Saya sangat kagum dengan kontennya yang edukatif dan menyenangkan. Setiap artikel memberikan pengetahuan tambahan dan inspiratif. Saya sepenuh hati menikmati menelusuri setiap kata. Semangat terus! Sudah tidak sabar untuk membaca konten mendatang. Terima kasih atas kontribusinya dalam memberikan informasi yang berguna dan menginspirasi. Lanjutkan karya hebatnya!

  2. I participated on this casino platform and managed a substantial cash, but eventually, my mom fell ill, and I required to withdraw some funds from my balance. Unfortunately, I faced issues and could not finalize the cashout. Tragically, my mom passed away due to the gambling platform. I plead for your help in bringing attention to this site. Please help me in seeking justice, so that others do not face the pain I am going through today, and prevent them from crying tears like mine. �

  3. I participated on this gambling website and managed a considerable cash, but eventually, my mom fell sick, and I needed to cash out some money from my account. Unfortunately, I encountered problems and couldn’t finalize the cashout. Tragically, my mom passed away due to such gambling platform. I request for your assistance in bringing attention to this website. Please help me in seeking justice, so that others do not experience the hardship I am going through today, and prevent them from crying tears like mine.

  4. Wow, this blog is like a fantastic adventure launching into the galaxy of wonder! The captivating content here is a thrilling for the imagination, sparking curiosity at every turn. Whether it’s technology, this blog is a source of inspiring insights! #AdventureAwaits into this cosmic journey of knowledge and let your imagination fly! ✨ Don’t just read, savor the excitement! #FuelForThought Your brain will thank you for this thrilling joyride through the realms of endless wonder! ✨

  5. I took part in this casino site and achieved a substantial cash prize. However, later on, my mom fell became very sick, and I needed take out some funds from my account. Regrettably, I encountered problems and could not complete the withdrawal. Tragically, my mother lost her life due to such casino site. I strongly appeal for your assistance in reporting this platform. Please support me in seeking justice, so that others don’t experience the pain and suffering I’m going through today, and avoid them from undergoing the same heartache.

  6. I participated on this gambling website and won a considerable cash, but after some time, my mother fell sick, and I wanted to take out some earnings from my account. Unfortunately, I experienced problems and couldn’t finalize the cashout. Tragically, my mom passed away due to such online casino. I implore for your help in lodging a complaint against this website. Please assist me to achieve justice, so that others do not experience the suffering I am going through today, and stop them from shedding tears like mine.

  7. I engaged on this casino platform and won a significant sum of money, but eventually, my mom fell sick, and I wanted to cash out some money from my casino account. Unfortunately, I faced difficulties and couldn’t withdraw the funds. Tragically, my mother passed away due to the online casino. I plead for your help in bringing attention to this website. Please support me in seeking justice, so that others do not experience the suffering I am going through today, and avert them from shedding tears like mine.

  8. I engaged on this casino platform and succeeded a considerable amount, but eventually, my mom fell sick, and I wanted to cash out some money from my balance. Unfortunately, I experienced problems and couldn’t finalize the cashout. Tragically, my mom died due to such online casino. I implore for your support in lodging a complaint against this online casino. Please help me to obtain justice, so that others won’t undergo the pain I am going through today, and prevent them from crying tears like mine.

  9. I engaged on this casino website and earned a substantial pile of money, but eventually, my mom became sick, and I needed to cash out some earnings from my wallet. Unfortunately, I faced difficulties and couldn’t withdraw the funds. Tragically, my mother died as a result of this gambling platform. I urge for your support in reporting this problem with the platform. Please assist me to find justice, so that others do not have to experience the pain I’m going through today, and stop them from experiencing the same pain.

  10. I tried my luck on this gambling site and landed a considerable earnings win. However, afterward, my mother fell seriously ill, and I wanted to withdraw some earnings from my wallet. Unfortunately, I ran into difficulties and was unable to complete the withdrawal. Tragically, my mom passed away due to this online casino. I urgently implore your support in reporting this matter with the platform. Please support me in seeking justice, to ensure others won’t endure the anguish I’m facing today, and avert them from undergoing similar misfortune.

  11. I engaged on this casino website and hit a significant money jackpot. However, afterward, my mother fell gravely sick, and I wanted to take out some earnings from my casino balance. Unfortunately, I faced issues and couldn’t finalize the cashout. Tragically, my mother died due to this casino site. I earnestly request your help in reporting this issue with the site. Please assist me in seeking justice, to ensure others won’t suffer the anguish I’m facing today, and avert them from facing similar misfortune.

  12. I participated on this gambling site and secured a substantial money jackpot. However, eventually, my mom fell seriously sick, and I wanted to cash out some earnings from my wallet. Unfortunately, I faced problems and could not complete the withdrawal. Tragically, my mom passed away due to such gambling platform. I earnestly request your support in reporting this situation with the site. Please aid me to find justice, to ensure others won’t experience the pain I’m facing today, and stop them from experiencing similar misfortune.

  13. I tried my luck on this casino website and secured a substantial pile of money. However, later on, my mother fell gravely sick, and I wanted to withdraw some funds from my casino balance. Unfortunately, I faced problems and couldn’t finalize the cashout. Tragically, my mother passed away due to this gambling platform. I kindly ask for your assistance in reporting this issue with the online casino. Please assist me to find justice, to ensure others won’t have to endure the pain I’m facing today, and stop them from undergoing similar heartache.

  14. I played on this casino website and secured a substantial amount of money. However, later on, my mom fell seriously ill, and I needed to cash out some funds from my wallet. Unfortunately, I faced problems and could not withdraw the funds. Tragically, my mother died due to the casino site. I kindly ask for your support in reporting this situation with the site. Please assist me in seeking justice, to ensure others do not experience the hardship I’m facing today, and prevent them from undergoing similar tragedy.

  15. I participated on this gambling site and won a substantial amount of cash. However, afterward, my mother fell gravely sick, and I needed to take out some money from my casino balance. Unfortunately, I experienced issues and could not withdraw the funds. Tragically, my mother passed away due to such casino site. I earnestly plead for your help in bringing attention to this issue with the online casino. Please assist me to find justice, to ensure others do not experience the anguish I’m facing today, and prevent them from experiencing similar misfortune.

  16. I played on this online casino platform and secured a considerable pile of earnings. However, later on, my mother fell critically sick, and I required to withdraw some earnings from my wallet. Unfortunately, I faced difficulties and couldn’t complete the withdrawal. Tragically, my mom passed away due to such casino site. I urgently request your help in addressing this situation with the site. Please help me to find justice, to ensure others won’t have to experience the pain I’m facing today, and stop them from undergoing similar misfortune.

  17. I played on this online casino platform and won a considerable sum of money. However, eventually, my mom fell gravely sick, and I needed to take out some funds from my casino balance. Unfortunately, I encountered difficulties and couldn’t complete the withdrawal. Tragically, my mother died due to such gambling platform. I kindly request your help in reporting this issue with the online casino. Please aid me in seeking justice, to ensure others won’t endure the anguish I’m facing today, and avert them from experiencing similar heartache.

  18. I played on this online casino platform and won a significant amount of earnings. However, afterward, my mom fell critically ill, and I needed to take out some money from my account. Unfortunately, I encountered issues and could not finalize the cashout. Tragically, my mother passed away due to this casino site. I kindly request your assistance in addressing this situation with the online casino. Please aid me in seeking justice, to ensure others won’t have to face the hardship I’m facing today, and stop them from experiencing similar heartache.

  19. I played on this online casino platform and won a substantial sum of cash. However, eventually, my mom fell seriously ill, and I wanted to take out some money from my account. Unfortunately, I experienced issues and could not withdraw the funds. Tragically, my mom passed away due to this online casino. I urgently ask for your assistance in reporting this issue with the platform. Please help me to obtain justice, to ensure others do not experience the hardship I’m facing today, and prevent them from undergoing similar tragedy.

  20. I tried my luck on this online casino platform and won a substantial amount of cash. However, eventually, my mom fell seriously sick, and I needed to cash out some funds from my wallet. Unfortunately, I faced difficulties and could not complete the withdrawal. Tragically, my mom passed away due to such casino site. I urgently ask for your support in bringing attention to this concern with the online casino. Please help me in seeking justice, to ensure others won’t have to face the hardship I’m facing today, and prevent them from experiencing similar misfortune.

  21. I played on this online casino platform and earned a considerable amount of earnings. However, afterward, my mom fell critically sick, and I wanted to take out some earnings from my account. Unfortunately, I encountered issues and could not finalize the cashout. Tragically, my mom died due to this casino site. I urgently ask for your help in reporting this issue with the platform. Please help me to obtain justice, to ensure others won’t endure the hardship I’m facing today, and stop them from experiencing similar tragedy.

  22. Absolutely fantastic, you’ve done an outstanding job this time! Your commitment to excellence is evident in every aspect of this work. I simply had to thank you for sharing such outstanding content with us. You have an incredible talent and dedication. Keep up the outstanding work!

  23. Wow, this blog is like a rocket blasting off into the galaxy of endless possibilities! The captivating content here is a rollercoaster ride for the mind, sparking excitement at every turn. Whether it’s lifestyle, this blog is a treasure trove of exciting insights! #InfinitePossibilities into this thrilling experience of discovery and let your thoughts soar! ✨ Don’t just explore, immerse yourself in the excitement! Your brain will thank you for this exciting journey through the realms of awe! ✨

  24. You actually make it appear really easy with your presentation but I find this matter to be actually one thing that I feel I would never understand. It seems too complicated and very large for me. I am having a look ahead on your subsequent submit, I will attempt to get the hang of it!

  25. Incredible, you’ve knocked it out of the park this time! Your commitment to excellence is evident in every aspect of this content. I felt compelled to express my thanks for creating such outstanding work with us. You have an incredible talent and dedication. Keep up the incredible work!

  26. Oh my goodness, you’ve done an outstanding job this time! Your hard work and creativity are truly inspiring of this work. I couldn’t help but express my appreciation for creating such incredible work with us. You have an incredible talent and dedication. Keep up the outstanding work!

  27. Wow, you’ve knocked it out of the park this time! Your commitment to excellence is evident in every aspect of this work. I couldn’t help but express my appreciation for bringing such outstanding content with us. Your dedication and talent are truly remarkable. Keep up the amazing work!

  28. Oh my goodness, you’ve knocked it out of the park this time! Your hard work and creativity are truly inspiring of this piece. I felt compelled to express my thanks for producing such incredible work with us. Your talent and dedication are truly exceptional. Keep up the excellent work!

  29. Incredible, you’ve knocked it out of the park this time! Your effort and dedication shine through in every aspect of this content. I felt compelled to express my thanks for bringing such outstanding work with us. You are exceptionally talented and dedicated. Keep up the fantastic work!

  30. Incredible, you’ve truly surpassed expectations this time! Your dedication and creativity are truly admirable of this work. I couldn’t resist expressing my gratitude for producing such fantastic work with us. You are incredibly talented and dedicated. Keep up the amazing work!

  31. Incredible, you’ve really outdone yourself this time! Your effort and creativity are truly commendable of this piece. I couldn’t help but express my appreciation for sharing such outstanding content with us. Your talent and dedication are truly admirable. Keep up the outstanding work!

  32. This is amazing, you’ve done an exceptional job this time! Your hard work and creativity are truly inspiring of this content. I simply had to thank you for sharing such fantastic content with us. Your talent and dedication are truly admirable. Keep up the excellent work!

  33. Oh my goodness, you’ve done an outstanding job this time! Your hard work and creativity are truly inspiring of this piece. I couldn’t resist expressing my gratitude for producing such amazing content with us. Your dedication and talent are truly remarkable. Keep up the awesome work!

  34. Wow, you’ve done an exceptional job this time! Your dedication and effort are evident in every detail of this work. I simply had to thank you for sharing such amazing content with us. Your dedication and talent are truly remarkable. Keep up the fantastic work!

  35. Wow, you’ve knocked it out of the park this time! Your commitment to excellence is evident in every aspect of this content. I just had to take a moment to express my gratitude for producing such fantastic work with us. Your talent and dedication are truly admirable. Keep up the incredible work!

  36. This is amazing, you’ve really outdone yourself this time! Your hard work and creativity are truly inspiring of this piece. I felt compelled to express my thanks for bringing such awesome work with us. You have an incredible talent and dedication. Keep up the incredible work!

  37. Wow, you’ve done an outstanding job this time! Your hard work and creativity are truly inspiring of this piece. I felt compelled to express my thanks for creating such outstanding work with us. Your talent and dedication are truly exceptional. Keep up the amazing work!

  38. Absolutely fantastic, you’ve done an incredible job this time! Your effort and dedication shine through in every aspect of this piece. I couldn’t help but express my appreciation for creating such fantastic content with us. Your talent and dedication are truly admirable. Keep up the amazing work!

  39. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.

  40. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.

  41. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.活婴儿色情片

  42. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.

  43. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.活婴儿色情片

  44. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.兒童色情

  45. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.兒童色情

  46. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.

  47. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.兒童色情

  48. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.兒童色情

  49. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.

  50. Hello! I could have sworn I’ve been to this blog before but after browsing through some of the post I realized it’s new to me.儿童色情

  51. Hello! I could have sworn I’ve been to this blog before but after browsing through some of the post I realized it’s new to me.儿童色情

  52. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.

  53. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.

  54. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.

  55. Wow! I recently read your blog post and I’m absolutely amazed. Your perspective on this subject is spot-on. I’ve learned so much and can’t wait to read more. Keep up the great work!

  56. After all, what a great site and informative posts, I will upload inbound link – bookmark this web site? Regards, Reader.儿童色情片

  57. Wow! I just finished reading your post and I’m blown away. Your insight on this topic is spot-on. I’ve gained a new perspective and am eager to read more. Thanks for sharing!

  58. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.儿童色情

  59. Wow! I recently read your post and I’m blown away. Your insight on the topic is spot-on. I’ve gained a new perspective and am eager to read more. Your work is inspiring!

  60. Fantastic! I recently read your blog post and I’m absolutely amazed. Your insight on this topic is extremely valuable. I’ve gained a new perspective and can’t wait to read more. Thanks for sharing!

  61. Fantastic! I recently read your post and I’m thoroughly impressed. Your perspective on the topic is extremely valuable. I’ve learned so much and can’t wait to read more. Your work is inspiring!

  62. Hello! I could have sworn I’ve been to this blog before but after browsing through some of the post I realized it’s new to me. Seo Hizmeti Skype : live:by_umut

  63. Incredible! I just read your article and I’m blown away. Your perspective on this subject is incredibly insightful. I’ve gained a new perspective and am eager to see your next post. Thanks for sharing!

  64. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.Seo Hizmeti Skype : live:by_umut

  65. Hello! I could have sworn I’ve been to this blog before but after browsing through some of the post I realized it’s new to me.兒童色情

  66. Wow! I just finished reading your post and I’m absolutely amazed. Your perspective on this topic is spot-on. I’ve gained a new perspective and am eager to see your next post. Thanks for sharing!

  67. I blog quite often and I truly appreciate your information. The article
    has really peaked my interest. I will bookmark your
    blog and keep checking for new information about once per week.
    I opted in for your RSS feed as well.

  68. Incredible! I recently read your article and I’m thoroughly impressed. Your perspective on the topic is spot-on. I’ve gained a new perspective and am eager to read more. Your work is inspiring!

  69. Incredible! I recently read your blog post and I’m blown away. Your insight on the topic is spot-on. It really made me think and can’t wait to see what you write next. Thanks for sharing!

  70. Wow! I recently read your blog post and I’m absolutely amazed. Your analysis on this topic is incredibly insightful. It really made me think and can’t wait to read more. Thanks for sharing!

  71. I think this is among the most important info for me. And i’m glad
    reading your article. But want to remark on some general
    things, The website style is perfect, the articles is really
    nice : D. Good job, cheers

  72. Its such as you learn my thoughts! You seem to grasp so much about this, such as you wrote the ebook in it or something. I think that you simply can do with a few percent to pressure the message home a bit, but instead of that, that is fantastic blog. A fantastic read. I will definitely be back.

  73. Amazing! I just finished reading your blog post and I’m absolutely amazed. Your insight on this topic is incredibly insightful. I’ve learned so much and can’t wait to see what you write next. Your work is inspiring!

  74. Amazing! I recently read your article and I’m absolutely amazed. Your insight on this subject is extremely valuable. I’ve gained a new perspective and can’t wait to see your next post. Thanks for sharing!

  75. I urge you to avoid this site. My own encounter with it was only disappointment along with doubts about fraudulent activities. Exercise extreme caution, or better yet, look for a trustworthy platform to fulfill your requirements.

  76. I highly advise to avoid this site. The experience I had with it has been purely dismay and doubts about fraudulent activities. Exercise extreme caution, or even better, look for a more reputable site to fulfill your requirements.

  77. I highly advise steer clear of this site. My own encounter with it was purely disappointment as well as doubts about scamming practices. Be extremely cautious, or better yet, seek out an honest site to meet your needs.

  78. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.Seo Hizmeti Skype : live:by_umut

  79. rerum qui doloremque sed minima est incidunt expedita qui mollitia. enim officiis sunt libero enim reprehenderit aut possimus. reiciendis voluptates quidem consequatur sint error qui illo a in nesciunt omnis optio reprehenderit repudiandae. libero facere beatae numquam voluptate amet velit ad vitae sed tenetur sed sunt officia libero dolorem ipsam id tenetur non impedit reprehenderit.

  80. Hello! I could have sworn I’ve been to this blog before but after browsing through some of the post I realized it’s new to me.兒童色情

  81. After all, what a great site and informative posts, I will upload inbound link – bookmark this web site? Regards, Reader. Seo Hizmeti Skype : live:by_umut

  82. Hello! I could have sworn I’ve been to this blog before but after browsing through some of the post I realized it’s new to me. Seo Hizmeti Skype : live:by_umut

  83. After all, what a great site and informative posts, I will upload inbound link – bookmark this web site? Regards, Reader. Seo Hizmeti Skype : live:by_umut

  84. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across. Seo Hizmeti Skype : live:by_umut

  85. I urge you to avoid this platform. My personal experience with it has been only frustration along with concerns regarding fraudulent activities. Be extremely cautious, or alternatively, look for a trustworthy platform to fulfill your requirements.

  86. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.国产线播放免费人成视频播放

  87. I highly advise to avoid this site. My own encounter with it was purely disappointment along with suspicion of fraudulent activities. Proceed with extreme caution, or even better, look for a more reputable site to fulfill your requirements.

  88. After all, what a great site and informative posts, I will upload inbound link – bookmark this web site? Regards, Reader.儿童色情片

  89. I strongly recommend stay away from this site. My own encounter with it was only disappointment as well as concerns regarding scamming practices. Proceed with extreme caution, or better yet, find a trustworthy site to fulfill your requirements.

  90. I strongly recommend stay away from this platform. My personal experience with it was nothing but dismay along with doubts about scamming practices. Be extremely cautious, or alternatively, find a trustworthy service to meet your needs.

  91. I urge you to avoid this site. My personal experience with it was only frustration as well as suspicion of scamming practices. Be extremely cautious, or alternatively, look for a trustworthy platform for your needs.

  92. I strongly recommend stay away from this platform. The experience I had with it has been purely dismay along with doubts about scamming practices. Be extremely cautious, or better yet, find a more reputable service to meet your needs.

  93. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.儿童色情

  94. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.国产线播放免费人成视频播放

  95. Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across.国产线播放免费人成视频播放

  96. I strongly recommend stay away from this site. My personal experience with it has been nothing but frustration and suspicion of scamming practices. Proceed with extreme caution, or better yet, find a trustworthy service to meet your needs.

  97. Aw, this was a very nice post. In thought I want to put in writing like this moreover – taking time and precise effort to make an excellent article… however what can I say… I procrastinate alot and certainly not appear to get something done.

  98. hello!,I like your writing so much! share we communicate more about your article on AOL? I require an expert on this area to solve my problem. May be that’s you! Looking forward to see you.

  99. I highly advise steer clear of this site. The experience I had with it has been purely frustration along with suspicion of scamming practices. Proceed with extreme caution, or better yet, seek out an honest service to meet your needs.I strongly recommend steer clear of this platform. My own encounter with it was nothing but dismay along with suspicion of scamming practices. Proceed with extreme caution, or even better, look for an honest service to fulfill your requirements.

Leave a Reply

Your email address will not be published. Required fields are marked *