Initial commit

This commit is contained in:
muellerlu
2026-05-29 10:19:13 +02:00
commit fedfd92270
726 changed files with 542654 additions and 0 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+72
View File
@@ -0,0 +1,72 @@
#########################################################
# 1_load_design.tcl
#
# Description: Load the design input files into
# Oasys-RTL and set design
# conditions. Must be run after the
# init_design.tcl script
#
# Usage: source in Oasys-RTL Command prompt
#
# Dependencies: init_design.tcl
# Launched from Oasys-RTL shell
#
#########################################################
set script_dir [file dirname [info script]]
set ekit_dir [file dirname ${script_dir}]
#Check if dependent scripts have been loaded
if {![info exists top_module]} {
source ${script_dir}/init_design.tcl
}
#=======================================================#
#Load technology libraries (Liberty and LEF)
#=======================================================#
# Read Oasys libraries (ODB)
read_db ${ekit_dir}/libs/nangate_mvt.odb
foreach vt [list hvt svt lvt] {
set vtUC [string toupper $vt]
set lib_cells(${vt}) [get_lib_cells *${vtUC}*]
if { [sizeof_collection $lib_cells(${vt})] > 0 } {
create_threshold_voltage_group ${vtUC} -lib_cells $lib_cells($vt)
}
}
report_operating_conditions
#=======================================================#
#Config the tolerance level for RTL parser for elobration
#=======================================================#
config_tolerance -blackbox true -connection_mismatch true \
-missing_physical_library true \
-continue_on_error false
#=======================================================#
#Read verilog design files
#=======================================================#
if {[file exists ${ekit_dir}/demo_chip_rtl/rtl/nova/trunk/src/Intra4x4_PredMode_decoding.v]} {
read_verilog $rtl_list -include $search_path
}
#=======================================================#
#Set design-specific parameters before synthesis
#=======================================================#
#Set the max routing layer (defined in 1_init_design.tcl)
set_max_route_layer $max_route_layer
#Reset dont_use property on all lib cells
set_dont_use [get_lib_cell * ] false
#Specify clock gating options
set_clock_gating_options -control_point before \
-minimum_bitwidth 4 -sequential_cell latch
echo "\n-----------------------------"
echo "\nDone preparing design for synthesis"
echo "\n-----------------------------\n"
+117
View File
@@ -0,0 +1,117 @@
#########################################################
# 2_synthesize_optimize.tcl
#
# Description: Synthesize and optimize the
# DEMO CHIP and generate
# the Oasys-RTL databases.
#
# Usage: source in Oasys-RTL Command prompt
#
# Dependencies: init_design.tcl
# 1_read_design.tcl
# Launched from Oasys-RTL shell
#
#########################################################
#=======================================================#
#Check Status of Flow and load prior scripts if needed
#=======================================================#
set script_dir [file dirname [info script]]
set ekit_dir [file dirname ${script_dir}]
#Check if dependent scripts have been loaded
if {![info exists top_module]} {
source ${script_dir}/init_design.tcl
source ${script_dir}/1_read_design.tcl
}
#=======================================================#
#Synthesize the DEMO CHIP RTL core
#=======================================================#
if {![file exists ${ekit_dir}/demo_chip_rtl/rtl/nova/trunk/src/Intra4x4_PredMode_decoding.v]} {
puts "ERROR: RTL source files from OpenCores.org were not found.\n"
puts "You can read a design database for a previously optimized design"
puts "by running the following command:\n"
puts "read_db ${ekit_dir}/demo_chip_rtl/demo_chip.odb\n\n"
return
}
#Perform Synthesis
synthesize -module ${top_module} -map_to_scan -gate_clock
set_route_layer_max_usage metal2 0.5
set_route_layer_max_usage metal3 0.8
set_route_layer_max_usage metal6 0.8
write_db ${output_dir}/odb/demo_chip.syn.odb
#=======================================================#
##Read constraints (logical and physical)
#=======================================================#
read_sdc -verbose $demo_chip_sdc_files
#read_sdc -verbose constraints/cts_constraints.sdc
report_design_metrics
check_timing
# Create User Path groups
group_path -name I2R -from [all_inputs]
group_path -name I2O -from [all_inputs] -to [all_outputs]
group_path -name R2O -to [all_outputs]
report_path_groups
#=======================================================#
#Optimize for timing
#=======================================================#
optimize -virtual
write_db ${output_dir}/odb/demo_chip.virtual_opt.odb
report_timing
report_path_groups
######################################################################
# create_chip with appropriate bloackages for IO pads
######################################################################
redirect -file ${output_dir}/demo_chip.create_chip.log { create_chip -bottom_clearance 30 -left_clearance 30 -right_clearance 30 -top_clearance 30 -utilization 60 }
set die [ exec cat ${output_dir}/demo_chip.create_chip.log | grep "create new die" | cut -c46-56 ]
set core [ expr $die - 30]
create_blockage -name blk_top -type macro -left 0 -right $die -bottom $core -top $die
create_blockage -name blk_bottom -type macro -left 0 -right $die -bottom 0 -top 30
create_blockage -name blk_left -type macro -left 0 -right 30 -bottom 0 -top $die
create_blockage -name blk_right -type macro -left $core -right $die -bottom 0 -top $die
#optimize for placement
optimize -place
write_db ${output_dir}/odb/demo_chip.placed_opt.odb
report_timing
report_path_groups
echo "\n-------------------------------------"
echo "\nSynthesis and optimization complete"
echo "\n-------------------------------------\n"
#=======================================================#
#Perform DFT
#=======================================================#
if {[info exists dft_flow] && [string match $dft_flow tessent]} {
puts "INFO::Running oasys Tessent DFT flow"
source scripts/oasys_tessent_dft.tcl
echo "\n-------------------------------------"
echo "\n Tessent DFT complete"
echo "\n-------------------------------------\n"
} elseif {[info exists dft_flow] && [string match $dft_flow oasys]} {
puts "INFO::Running oasys native DFT flow"
source scripts/oasys_dft.tcl
report_scan_chains
echo "\n-------------------------------------"
echo "\n Oasys DFT complete"
echo "\n-------------------------------------\n"
} else {
puts "\nINFO:: 'dft_flow' variable not set to 'tessent' or 'oasys'."
puts " skipping DFT flow. 'source' following script to run DFT"
puts " source ${ekit_dir}/scripts/oasys_dft.tcl"
puts " source ${ekit_dir}/scripts/oasys_tessent_dft.tcl"
}
#exit
+32
View File
@@ -0,0 +1,32 @@
#########################################################
# 3_export_design.tcl
#
# Description: Export the design data
#
# Usage: source in Oasys-RTL Command prompt
#
# Dependencies: init_design.tcl
# 1_load_design.tcl
# 2_synthesize_optimize.tcl
# Launched from Oasys-RTL shell after
# synthesis and optimization
#
#########################################################
#Check if dependent scripts have been loaded
if {![info exists top_module]} {
source scripts/init_design.tcl
}
# Write results
write_db ${output_dir}/odb/demo_chip.oasys_final.odb
write_verilog ${output_dir}/demo_chip.oasys_final.v
write_sdc ${output_dir}/demo_chip.oasys_final.sdc
write_def ${output_dir}/demo_chip.def
write_stil ${output_dir}/demo_chip.stil
write_ctl ${output_dir}/demo_chip.ctl
echo "\n-----------------------------"
echo "\nDesign data exported to output dir."
echo "\n-----------------------------\n"
+37
View File
@@ -0,0 +1,37 @@
###POWER PLANNING####
##Make PG rails and stripes and connect macros to the power pins##
create_supply_net -net_name VDD -power_net true
create_supply_net -net_name VSS -power_net false
connect_supply_net VDD -pins [get_pins *vdd* ]
connect_supply_net VSS -pins [get_pins *gnd* ]
## Adding Power Structure
remove_routing -route_types pre_route
create_pg_rings -partitions "demo_chip" -nets "VDD VSS" -window false -layers { metal9 metal10 } -widths { 45000a 50000a } -step 32000a -spacing 15000a -offset { 165000a 165000a 165000a 165000a } -keep_pattern all -bridge_pattern single -ignore_blockages { placement } -check_drc { all } -measure_from edge -corner_style concentric -insert_vias true -location auto
create_pg_stripes -partitions "demo_chip" -nets "VDD VSS" -window false -layer metal10 -widths { 80000a 80000a } -step 500000a -spacing 20000a -direction vertical -offset { 500000a 500000a } -margin { 300000a 300000a } -measure_from center_line -keep_pattern false -ignore_blockages { placement } -check_drc { all }
create_pg_stripes -partitions "demo_chip" -nets "VDD VSS" -window false -layer metal9 -widths { 80000a 80000a } -step 500000a -spacing 20000a -direction horizontal -offset { 500000a 500000a } -margin { 300000a 300000a } -measure_from center_line -keep_pattern false -ignore_blockages { placement } -check_drc { all }
insert_pg_vias -nets {VDD VSS} -layers {metal9 metal10} -extend true -from_type stripe -to_type ring
insert_pg_vias -nets {VDD VSS} -from_type stripe -to_type stripe -layers {metal9 metal10}
create_pg_stripes -partitions "demo_chip" -nets "VDD VSS" -window false -layer metal4 -widths { 40000a 40000a } -step 500000a -spacing 20000a -direction vertical -offset { 800000a 800000a } -margin { 300000a 300000a } -measure_from center_line -keep_pattern false -ignore_blockages { placement } -check_drc { all }
insert_pg_vias -nets {VDD VSS} -from_type stripe -to_type stripe -layers {metal9 metal4} -extend true
insert_pg_vias -nets {VDD VSS} -from_type ring -to_type stripe -layers {metal9 metal4} -extend true
create_pg_rails -partitions "demo_chip" -nets "VDD VSS" -window false -sites "FreePDK45_38x28_10R_NP_162NW_34O" -ignore_blockages { none }
insert_pg_vias -from_type stripe -to_type rail -layers {metal1 metal4}
insert_pg_vias -nets {VDD VSS} -layers {metal6 metal10} -from_type stripe -to_type macro_port
insert_pg_vias -nets {VDD VSS} -layers {metal4 metal5} -from_type stripe -to_type macro_port
####################Check DRC####################
check_drc -only false
clean_drc -force
check_drc -with_pre_route
+124
View File
@@ -0,0 +1,124 @@
####################################################Read_RTL###########################################
set search_path "${demo_chip_rtl_dir}/rtl/mips32r1/trunk/Hardware/MIPS32_Standalone \
${demo_chip_rtl_dir}/rtl/usb_phy/trunk/rtl/verilog \
${demo_chip_rtl_dir}/rtl/usb/trunk/rtl/verilog \
${demo_chip_rtl_dir}/rtl/nova/tags/Start/src \
${demo_chip_rtl_dir}/rtl/nova/trunk/src \
${demo_chip_rtl_dir}/rtl/demo_chip \
${demo_chip_rtl_dir}/rtl/hpdmc/trunk/hpdmc_ddr32/rtl \
${demo_chip_rtl_dir}/rtl/mem_wrapper \
${demo_chip_rtl_dir}/rtl/lib_cells \
${demo_chip_rtl_dir}/rtl/sondrel \
${demo_chip_rtl_dir}/rtl/openmsp430 \
${demo_chip_rtl_dir}/rtl/openmsp430/periph \
${demo_chip_rtl_dir}/rtl/hpdmc/trunk/hpdmc_ddr32/rtl \
${demo_chip_rtl_dir}/rtl/hpdmc/trunk/hpdmc_ddr32/rtl"
set rtl_list { cpu_sys.v
usb_sys.v
nova_defines.v
BitStream_buffer.v
BitStream_controller.v
bitstream_gclk_gen.v
BitStream_parser_FSM_gating.v
bs_decoding.v
cavlc_consumed_bits_decoding.v
cavlc_decoder.v
CodedBlockPattern_decoding.v
dependent_variable_decoding.v
DF_mem_ctrl.v
DF_pipeline.v
DF_reg_ctrl.v
DF_top.v
end_of_blk_decoding.v
exp_golomb_decoding.v
ext_RAM_ctrl.v
heading_one_detector.v
hybrid_pipeline_ctrl.v
Inter_mv_decoding.v
Inter_pred_CPE.v
Inter_pred_LPE.v
Inter_pred_pipeline.v
Inter_pred_reg_ctrl.v
Inter_pred_sliding_window.v
Inter_pred_top.v
Intra4x4_PredMode_decoding.v
Intra_pred_PE.v
Intra_pred_pipeline.v
Intra_pred_reg_ctrl.v
Intra_pred_top.v
IQIT.v
level_decoding.v
nC_decoding.v
nova.v
NumCoeffTrailingOnes_decoding.v
pc_decoding.v
QP_decoding.v
ram_async_1r_sync_1w.v
ram_sync_1r_sync_1w.v
rec_DF_RAM_ctrl.v
rec_gclk_gen.v
reconstruction.v
run_decoding.v
sum.v
syntax_decoding.v
total_zeros_decoding.v
Add.v
ALU.v
Compare.v
Control.v
CPZero.v
Divide.v
EXMEM_Stage.v
Hazard_Detection.v
IDEX_Stage.v
IFID_Stage.v
MemControl.v
MEMWB_Stage.v
Mux2.v
Mux4.v
Processor.v
RegisterFile.v
Register.v
TrapDetect.v
usbf_crc16.v
usbf_crc5.v
usbf_defines.v
usbf_ep_rf_dummy.v
usbf_ep_rf.v
usbf_idma.v
usbf_mem_arb.v
usbf_pa.v
usbf_pd.v
usbf_pe.v
usbf_pl.v
usbf_rf.v
usbf_utmi_if.v
usbf_utmi_ls.v
usbf_wb.v
usbf_top.v
usb_phy.v
usb_rx_phy.v
usb_tx_phy.v
hpdmc_banktimer.v
hpdmc_busif.v
hpdmc_ctlif.v
hpdmc_datactl.v
hpdmc_mgmt.v
hpdmc.v
spartan6/hpdmc_ddrio.v
spartan6/hpdmc_iddr32.v
spartan6/hpdmc_iobuf32.v
spartan6/hpdmc_obuft4.v
spartan6/hpdmc_oddr32.v
spartan6/hpdmc_oddr4.v
nova_wrapper.v
demo_chip.v
powerdown_control.v
IOBUF.v
MemGen_32_12.v
MemGen_32_14.v
ddr_alignment.v
ddr_pad_lib.v
demo_chip.v }
+38
View File
@@ -0,0 +1,38 @@
#########################################################
# dse_base.tcl
#
# Description: Sets up the design for exploration
#
# Usage: source in Oasys-RTL Command prompt
#
# Dependencies: init_design.tcl
#########################################################
#Initialize script parameters
source scripts/init_design.tcl
#Disable warning messages
message -enable false TA-116
message -enable false LIB-136
message -enable false LIB-114
message -enable false NL-138
message -enable false NL-120
source scripts/open_database.tcl
###########################
# If available, synthesize opencore files
# instead of the pre-optimized ODB file
############################
# read_verilog $rtl_list -include $search_path
# synthesize -module ${top_module} -map_to_scan -gate_clock
# create_clock -period 2.50ns -name sysclk sysclk
# read_sdc -verbose $demo_chip_sdc_files
#insert clk explorer here
#Optimize
optimize -virtual
report_clocks
report_power
report_design_metrics
+45
View File
@@ -0,0 +1,45 @@
#########################################################
# dse_base.tcl
#
# Description: Sets up the design for exploration
#
# Usage: source in Oasys-RTL Command prompt
#
# Dependencies: init_design.tcl
#########################################################
#Initialize script parameters
set_explore -variable clock_period \
-options { 2.00ns 2.25ns 2.50ns 2.75ns }
source scripts/init_design.tcl
#Disable warning messages
message -enable false TA-116
message -enable false LIB-136
message -enable false LIB-114
message -enable false NL-138
message -enable false NL-120
source scripts/open_database.tcl
###########################
# If available, synthesize opencore files
# instead of the pre-optimized ODB file
############################
# read_verilog $rtl_list -include $search_path
# synthesize -module ${top_module} -map_to_scan -gate_clock
# create_clock -period 2.50ns -name sysclk sysclk
# read_sdc -verbose $demo_chip_sdc_files
explore clock_period {
2.00ns { scale_clock -all -20 }
2.25ns { scale_clock -all -10 }
2.75ns { scale_clock -all 10 }
}
#Optimize
optimize -virtual
report_clocks
report_power
report_design_metrics
+44
View File
@@ -0,0 +1,44 @@
set script_dir [file dirname [info script]]
set ekit_dir [file normalize [file dirname ${script_dir}]]
set libs_dir ${ekit_dir}/nangate/libs
set lefs_dir ${ekit_dir}/nangate/lefs
puts "Base Dir: ${ekit_dir}"
#set lib(io) "${libs_dir}/lib_WCLCOM_ss_0p95v/LowPowerOpenCellLibrary_worst_low_ccs.lib \
# ${libs_dir}/lib_WCLCOM_ss_0p95v/NangateOpenCellLibrary_worst_low_ccs.lib
set lib(io) "${libs_dir}/IO.lib \
${libs_dir}/PLL.lib \
${libs_dir}/MemGen_16_10.lib"
set lib(hvt) "${libs_dir}/lib_WCLCOM_ss_0p85v/0p85/NangateOpenCellLibrary_45nm_HVT_worst_low_0p85V_conditional_nldm.lib \
${libs_dir}/lib_WCLCOM_ss_0p95v/0p95/NangateOpenCellLibrary_45nm_HVT_worst_low_conditional_nldm.lib"
set lib(svt) "${libs_dir}/lib_WCLCOM_ss_0p85v/0p85/NangateOpenCellLibrary_45nm_SVT_slow_0p85V_conditional_nldm.lib \
${libs_dir}/lib_WCLCOM_ss_0p95v/0p95/NangateOpenCellLibrary_45nm_SVT_worst_low_conditional_nldm.lib"
set lib(lvt) "${libs_dir}/lib_WCLCOM_ss_0p85v/0p85/NangateOpenCellLibrary_45nm_LVT_slow_0p85V_conditional_nldm.lib \
${libs_dir}/lib_WCLCOM_ss_0p95v/0p95/NangateOpenCellLibrary_45nm_LVT_worst_low_conditional_nldm.lib"
#Specify the Physical libraries
set lef(io) "${lefs_dir}/IO.lef \
${lefs_dir}/PLL.lef \
${lefs_dir}/MemGen_16_10.lef "
# ${lefs_dir}/NangateOpenCellLibrary.macro.lef"
set lef(hvt) ${lefs_dir}/NangateOpenCellLibrary_HVT.macro.lef
set lef(svt) ${lefs_dir}/NangateOpenCellLibrary_SVT.macro.lef
set lef(lvt) ${lefs_dir}/NangateOpenCellLibrary_LVT.macro.lef
#################################################
### Build the library ODB
#################################################
read_lef ${lefs_dir}/tech_lef/NangateOpenCellLibrary.tech.lef
read_ptf -temperature 0 ${ekit_dir}/nangate/ptf/NCSU_FreePDK_45nm.ptf
foreach vt [list io hvt svt lvt] {
puts "processing ${vt}... "
read_library $lib(${vt})
read_lef $lef(${vt})
}
write_db -data library ${ekit_dir}/libs/nangate_mvt.odb
puts "wrote ${vt}: ${libs_dir}/libs/nangate_mvt.odb"
+31
View File
@@ -0,0 +1,31 @@
# Enable capture of commands
config_shell -echo true
###################Top Module Specification###########
set top_module "demo_chip"
set max_route_layer "10"
# Set design file path variables
set script_dir [file dirname [info script]]
set ekit_dir [file dirname ${script_dir}]
set demo_chip_rtl_dir "${ekit_dir}/demo_chip_rtl"
set demo_chip_sdc_files "${ekit_dir}/constraints/demo_chip_func.sdc"
set output_dir "${ekit_dir}/output"
#set a consistant reporting format for timing
config_report timing -format "cell edge arrival delay arc_delay net_delay slew net_load load fanout location power_domain"
# Set DFT flow settings
# To run the tessent DFT flow, please set the dft_flow variable to "tessent" from "oasys" and update tessent_build path
set dft_flow tessent
set tessent_build "/applications/SiemensEDA/siemenseda2023/tessent/bin/tessent"
#set tessent_build $env(TESSENT)/bin/tessent
#Source the script that sets the path variables for all input files
source ${script_dir}/demo_chip_design_files.tcl
echo "\n-----------------------------"
echo "\nDone setting design variables"
echo "\n-----------------------------\n"
+72
View File
@@ -0,0 +1,72 @@
#=======================================================#
#Enable shift registers identification
#=======================================================#
infer_shift_registers
#=======================================================#
#Define dft settings
#=======================================================#
define_test_pin -pin SCAN_ENABLE -scan 1 -default_scan_enable -create_port
define_test_pin -pin scan_mode -scan 1
define_test_clock -pin sysclk_byp -test_domain A
connect_clock_gating_test_pin -test_pin SCAN_ENABLE
#Check the DFT violation and use autofix feature to adress them
check_dft -auto_test_clock -auto_test_pins
report_dft_violations
#=======================================================#
# Pre fix_dft_violation database
#=======================================================#
write_db ${output_dir}/odb/demo_chip.oasysdft_pre_fix.odb
fix_dft_violations -type all -test_clock sysclk_byp -test_control scan_mode
check_dft
report_dft_violations
#=======================================================#
#Disable scan on enable_nova0_reg & enable_nova1_reg
#=======================================================#
set_dont_scan -verbose [get_cell enable_nova0_reg] true
set_dont_scan -verbose [get_cell enable_nova1_reg] true
#=======================================================#
#Final optimize
#=======================================================#
optimize
write_db ${output_dir}/odb/demo_chip.oasysdft_post_fix.odb
write_verilog ${output_dir}/demo_chip.oasysdft_post_fix.v
report_timing
report_endpoints
report_power
report_path_groups
### Using partitioned based DFT Flow
# Should report 'default' as current dft partition
current_dft_partition
# Define DFT partitions
define_dft_partition P1 -instances {i_cpu_sys nova1}
define_dft_partition P2 -instances { nova0}
report_dft_partitions
## define_scan_chain
define_scan_chain -scan_in SI_1 -scan_out SO_1 -create_port -partition P1
current_dft_partition P2
# following definition scope is limited to P2
define_scan_chain -scan_in SI_2 -scan_out SO_2 -create_port
# Resetting the partition definition to 'Default'
reset_dft_partition
# Following scan chains should be created corresponding to 'Default' partition, meaning any logic outside of already coverd partitions.
define_scan_chain -scan_in SI_3 -scan_out SO_3 -create_port
#connect_scan_chains
connect_scan_chains -physical -mix_clock_edges
+107
View File
@@ -0,0 +1,107 @@
if {[info exists tessent_build] && [string match $dft_flow tessent]} {
puts "INFO::using $tessent_build build to run the Tessent DFT flow"
} else {
puts "ERROR::To run the tessent DFT flow, Please set the following variables (as shown in the scripts/init_design.tcl file)"
puts " - 'tessent_build' variable to the tessent executable"
puts " # set dft_flow tessent"
puts ""
puts " - 'dft_flow' variable to 'tessent'"
puts " # set tessent_build \$env(TESSENT)/bin/tessent"
return 0
}
#=======================================================#
#Define dft settings
#=======================================================#
define_test_pin -pin scan_mode_pad/C -scan 1 -default_scan_enable
define_test_pin -pin scan_mode -scan 1
define_test_pin -pin reset_n_pad/C -scan 1
define_test_pin -pin nova0/reset_n_sync_reg/Q -scan 1
define_test_pin -pin nova1/reset_n_sync_reg/Q -scan 1
define_test_clock -pin nova1/clk
define_test_clock -pin nova0/clk
define_test_clock -pin usbclk_byp
define_test_clock -pin sysclk_byp
connect_clock_gating_test_pin -test_pin scan_mode_pad/C
#Check the DFT violation and use autofix feature to adress them
check_dft -auto_test_clock -auto_test_pins
#=======================================================#
# Pre fix_dft_violation database
#=======================================================#
write_db ${output_dir}/odb/demo_chip.tessent_pre_fix.odb
fix_dft_violations -type all -test_clock sysclk_byp -test_control scan_mode_pad/C
check_dft
report_dft_violations
#=======================================================#
#Final optimize
#=======================================================#
optimize
write_db ${output_dir}/odb/demo_chip.tessent_post_fix.odb
write_verilog ${output_dir}/demo_chip.tessent_post_fix.v
report_timing
report_endpoints
report_power
report_path_groups
#========================================================#
# Formalpro verification command
#========================================================#
#verify ${output_dir}/verilog/post_optimize.v -base_directory post_optimize
#=======================================================#
# configuring Tessent build
#=======================================================#
#Specify the path to Tessent exec.
config_tessent -exec_path $tessent_build
#=======================================================#
# Tessent TPI
#=======================================================#
set fastscan_path "${ekit_dir}/libs/fastscan"
config_tessent -ignore_clock_gating "on"
set lib_list [glob -nocomplain $fastscan_path/*.fslib ]
config_tessent -library $lib_list
config_tessent_tpi -total_number 2% -control_point_enable control_test_point_en -observe_point_enable observe_test_point_en
run_tessent_tpi
#========================================================#
# Formalpro verification command
#========================================================#
#verify ${output_dir}/verilog/post_tpi.v -base_directory post_tpi
#=======================================================#
# Tessent SCAN
#=======================================================#
check_dft
for {set i 1} {$i < 5} {incr i} {
define_scan_chain -scan_in SI_$i -scan_out SO_$i -create_port
}
run_tessent_scan
write_db ${output_dir}/odb/demo_chip.tessent_post_scan.odb
write_verilog ${output_dir}/demo_chip.tessent_post_scan.v
report_power
report_path_groups
report_scan_chains
#========================================================#
#Formalpro verification command
#========================================================#
#verify ${output_dir}/verilog/post_dft.v -base_directory post_dft
+43
View File
@@ -0,0 +1,43 @@
#########################################################
# open_database.tcl
#
# Description: Load the generated Oasys-RTL databases (.odb)
# into the tool
#
# Usage: source in Oasys-RTL Command prompt
#
# Dependencies: 1_init_design.tcl
# Existing odb created from the
# Launched from Oasys-RTL shell
#
#########################################################
# Check if dependent scripts have been loaded
if {![info exists top_module]} {
source scripts/init_design.tcl
}
if { ![info exists ekit_dir] } { return }
# Read existing Oasys-RTL database (design and libraries)
if {[file exists ${ekit_dir}/output/odb/demo_chip.oasys_final.odb]} {
puts "Using ODB from output directory"
read_db ${ekit_dir}/output/odb/demo_chip.oasys_final.odb
} elseif {[file exists ${ekit_dir}/demo_chip_rtl/demo_chip.odb]} {
puts "Using pre-defined ODB from demo_chip_rtl directory"
read_db ${ekit_dir}/demo_chip_rtl/demo_chip.odb
} else {
puts "unable to locate ODB file for demo_chip design"
}
# Report DFT if scan chains exist
if { [get_scan_chains] > 0 } {
check_dft
report_scan_chains
}
# Report design
puts "Running timing reports..."
report_path_groups
report_timing
+8
View File
@@ -0,0 +1,8 @@
set rtVersion [get_parameter version]
## remove all placement
delete_physical -all -verbose true
## create a new rectilinear die given a list of points
create_chip -points {{0 0} {0 700} {700 700} {700 1600} {2500 1600} {2500 0} } -overwrite true -verbose true
report_design_metrics
#optimize -place