Compare commits
8 Commits
86249ca0f0
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b3e5f395a1 | ||
|
|
12b848a74c | ||
|
|
0f3384e157 | ||
|
|
513244f16f | ||
|
|
9ed2c9a8f4 | ||
|
|
da358566a4 | ||
|
|
10b5b08537 | ||
|
|
b76ce3629e |
@@ -13,7 +13,7 @@ if {$PaR_INIT eq "TRUE"} {
|
|||||||
|
|
||||||
set init_verilog ${NETLIST_PATH}/${NETLIST_TOP_NAME}; # SYN netlist file
|
set init_verilog ${NETLIST_PATH}/${NETLIST_TOP_NAME}; # SYN netlist file
|
||||||
set init_mmmc_file ${PAR_MMMC_FILE}; # Techmological file for multi-mode multi-corner PaR
|
set init_mmmc_file ${PAR_MMMC_FILE}; # Techmological file for multi-mode multi-corner PaR
|
||||||
set init_io_file ${PAR_NETLIST_TOP_PORT_FILE}; # File with location of the TOP level ports on the floorplan
|
#set init_io_file ${PAR_NETLIST_TOP_PORT_FILE}; # File with location of the TOP level ports on the floorplan
|
||||||
|
|
||||||
init_design
|
init_design
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,10 +12,10 @@
|
|||||||
|
|
||||||
|
|
||||||
### ================= USER SETTINGS =================
|
### ================= USER SETTINGS =================
|
||||||
set NETLIST_TOP_NAME "scr1_top_ahb_syn_netlist.v"; # RTL top module name
|
set NETLIST_TOP_NAME "scr1_core_top_syn_netlist.v"; # RTL top module name
|
||||||
set NETLIST_PATH "../results/results_syn"; # RTL path to the source files
|
set NETLIST_PATH "../results/results_syn"; # RTL path to the source files
|
||||||
|
|
||||||
set PAR_SDC_TOP_NAME "scr1_top_ahb_syn.sdc"; # SDC top file name
|
set PAR_SDC_TOP_NAME "scr1_core_top_syn.sdc"; # SDC top file name
|
||||||
set PAR_SDC_PATH "../results/results_syn"; # SDC path to the sources
|
set PAR_SDC_PATH "../results/results_syn"; # SDC path to the sources
|
||||||
|
|
||||||
set PAR_MMMC_FILE "../scripts/scripts_aux/XFAB180_MMMC.tcl"; # Multi-mode multi-corner file
|
set PAR_MMMC_FILE "../scripts/scripts_aux/XFAB180_MMMC.tcl"; # Multi-mode multi-corner file
|
||||||
@@ -28,7 +28,7 @@ set PAR_INIT_LEF_FILESET "/Cadence/Libs/X_FAB/XKIT/xt018/cadence/v7_0/techLEF/v7
|
|||||||
set PAR_REPORTS_FOLDER "../reports/reports_PaR"; # Reports folder
|
set PAR_REPORTS_FOLDER "../reports/reports_PaR"; # Reports folder
|
||||||
set PAR_RESULTS_FOLDER "../results/results_PaR"; # Results folder
|
set PAR_RESULTS_FOLDER "../results/results_PaR"; # Results folder
|
||||||
|
|
||||||
set FLOORPLAN_DIMENSIONS {9000 9000}; # FP chip area
|
set FLOORPLAN_DIMENSIONS {500 500}; # FP chip area
|
||||||
set FLOORPLAN_MARGINS {50 50 50 50}; #FP chip margins
|
set FLOORPLAN_MARGINS {50 50 50 50}; #FP chip margins
|
||||||
### ================= END of USER SETTINGS =============
|
### ================= END of USER SETTINGS =============
|
||||||
|
|
||||||
|
|||||||
@@ -48,6 +48,9 @@ if {$MAPPING eq "TRUE"} {
|
|||||||
# Rear SDC constraints
|
# Rear SDC constraints
|
||||||
read_sdc ${SYN_SDC_PATH}/${SYN_SDC_TOP_NAME}
|
read_sdc ${SYN_SDC_PATH}/${SYN_SDC_TOP_NAME}
|
||||||
|
|
||||||
|
# For testing correctness of SDC uncomment the command below
|
||||||
|
#exit
|
||||||
|
|
||||||
# Synthesize (technology mapped)
|
# Synthesize (technology mapped)
|
||||||
synthesize -to_mapped
|
synthesize -to_mapped
|
||||||
synthesize -incremental
|
synthesize -incremental
|
||||||
|
|||||||
78
src/sdc/scr1_core_top.sdc
Normal file
78
src/sdc/scr1_core_top.sdc
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
### Stage: "Synthesis and PaR"
|
||||||
|
### File description: "Constraints for the design"
|
||||||
|
|
||||||
|
|
||||||
|
# SET LIB UNITS
|
||||||
|
set_units -time 1.0ns;
|
||||||
|
set_units -capacitance 1.0pF;
|
||||||
|
|
||||||
|
set_max_capacitance 0.5 [all_outputs]
|
||||||
|
|
||||||
|
### ====================== CLOCKS ===========================
|
||||||
|
# Clock period: 10 ns (100 MHz)
|
||||||
|
set CLK_PERIOD 100
|
||||||
|
|
||||||
|
|
||||||
|
# Clock uncertainty: 200 ps for all clocks
|
||||||
|
set CLK_UNCERT 0.2;
|
||||||
|
|
||||||
|
|
||||||
|
# Clock transition: 1 ns R/F
|
||||||
|
set MINRISE 0
|
||||||
|
set MAXRISE 1.0
|
||||||
|
set MINFALL 0
|
||||||
|
set MAXFALL 1.0
|
||||||
|
|
||||||
|
|
||||||
|
# Clock setup
|
||||||
|
create_clock -name "clk" -period $CLK_PERIOD -waveform "0 [expr $CLK_PERIOD/2.0]" [get_ports "clk"]
|
||||||
|
|
||||||
|
set_clock_uncertainty $CLK_UNCERT [get_clocks "clk"]
|
||||||
|
|
||||||
|
set_clock_transition -rise -min $MINRISE [get_clocks "clk"]
|
||||||
|
set_clock_transition -rise -max $MAXRISE [get_clocks "clk"]
|
||||||
|
set_clock_transition -fall -min $MINFALL [get_clocks "clk"]
|
||||||
|
set_clock_transition -fall -max $MAXFALL [get_clocks "clk"]
|
||||||
|
|
||||||
|
### ====================== DELAYS ===========================
|
||||||
|
# IO delays: 2.5 ns
|
||||||
|
set INPUT_DELAY_CLK [expr $CLK_PERIOD/4.0]
|
||||||
|
set OUTPUT_DELAY_CLK [expr $CLK_PERIOD/4.0]
|
||||||
|
|
||||||
|
|
||||||
|
# IO delays setup
|
||||||
|
set_input_delay -clock "clk" -max $INPUT_DELAY_CLK [all_inputs]
|
||||||
|
set_input_delay -clock "clk" -min $INPUT_DELAY_CLK [all_inputs]
|
||||||
|
|
||||||
|
set_output_delay -clock "clk" -max $OUTPUT_DELAY_CLK [all_outputs]
|
||||||
|
set_output_delay -clock "clk" -min $OUTPUT_DELAY_CLK [all_outputs]
|
||||||
|
|
||||||
|
|
||||||
|
# Ideal networks
|
||||||
|
set_ideal_network [get_ports "pwrup_rst_n"]
|
||||||
|
set_ideal_network [get_ports "rst_n"]
|
||||||
|
set_ideal_network [get_ports "cpu_rst_n"]
|
||||||
|
set_ideal_network [get_ports "test_rst_n"]
|
||||||
|
|
||||||
|
|
||||||
|
# False paths
|
||||||
|
set_false_path -from [get_ports "pwrup_rst_n"]
|
||||||
|
set_false_path -from [get_ports "rst_n"]
|
||||||
|
set_false_path -from [get_ports "cpu_rst_n"]
|
||||||
|
set_false_path -from [get_ports "test_rst_n"]
|
||||||
|
|
||||||
|
|
||||||
|
set_case_analysis 0 [get_ports "test_mode"]
|
||||||
|
|
||||||
|
# |--------------|
|
||||||
|
#->| |->
|
||||||
|
#->| clk |->
|
||||||
|
# | |
|
||||||
|
# ----------------
|
||||||
|
# | rtc |
|
||||||
|
# ----------------
|
||||||
|
#->| |->tdo
|
||||||
|
#->| tck |->tdo_en
|
||||||
|
# | |
|
||||||
|
# |--------------|
|
||||||
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
### Stage: "Synthesis and PaR"
|
|
||||||
### File description: "Constraints for the design"
|
|
||||||
|
|
||||||
|
|
||||||
# SET LIB UNITS
|
|
||||||
set_units -time 1.0ns;
|
|
||||||
set_units -capacitance 1.0pF;
|
|
||||||
|
|
||||||
set_max_capacitance 0.5 [all_outputs]
|
|
||||||
|
|
||||||
### ====================== CLOCKS ===========================
|
|
||||||
#clock uncertainty: 200ps for all clocks
|
|
||||||
set CLK_UNCERT 0.2;
|
|
||||||
#transition: 1ns R/F
|
|
||||||
|
|
||||||
# CLOCK PERIOD
|
|
||||||
set CLK_PERIOD 11.13
|
|
||||||
set TCK_PERIOD 100
|
|
||||||
set RTC_CLK_PERIOD 10000
|
|
||||||
|
|
||||||
# IO DELAYS
|
|
||||||
set INPUT_DELAY_CLK [expr $CLK_PERIOD/4.0]
|
|
||||||
set OUTPUT_DELAY_CLK [expr $CLK_PERIOD/4.0]
|
|
||||||
|
|
||||||
set INPUT_DELAY_TCK [expr $TCK_PERIOD/4.0]
|
|
||||||
set OUTPUT_DELAY_TCK [expr $TCK_PERIOD/4.0]
|
|
||||||
|
|
||||||
#clk->100MHz
|
|
||||||
create_clock -name "clk" -period $CLK_PERIOD -waveform "0 [expr $CLK_PERIOD/2.0]" [get_ports "clk"]
|
|
||||||
#tck->10MHz
|
|
||||||
create_clock -name "tck" -period $TCK_PERIOD -waveform "0 [expr $TCK_PERIOD/2.0]" [get_ports "tck"]
|
|
||||||
#rtc_clk->100kHz
|
|
||||||
create_clock -name "rtc_clk" -period $RTC_CLK_PERIOD -waveform "0 [expr $RTC_CLK_PERIOD/2.0]" [get_ports "rtc_clk"]
|
|
||||||
|
|
||||||
set_clock_groups -asynchronous -group {"clk"} -group {"tck"} -group {"rtc_clk"}
|
|
||||||
|
|
||||||
set MINRISE 0
|
|
||||||
set MAXRISE 1.0
|
|
||||||
set MINFALL 0
|
|
||||||
set MAXFALL 1.0
|
|
||||||
|
|
||||||
set_clock_uncertainty $CLK_UNCERT [get_clocks "clk"]
|
|
||||||
set_clock_transition -rise -min $MINRISE [get_clocks "clk"]
|
|
||||||
set_clock_transition -rise -max $MAXRISE [get_clocks "clk"]
|
|
||||||
set_clock_transition -fall -min $MINFALL [get_clocks "clk"]
|
|
||||||
set_clock_transition -fall -max $MAXFALL [get_clocks "clk"]
|
|
||||||
|
|
||||||
set_clock_uncertainty $CLK_UNCERT [get_clocks "tck"]
|
|
||||||
set_clock_transition -rise -min $MINRISE [get_clocks "tck"]
|
|
||||||
set_clock_transition -rise -max $MAXRISE [get_clocks "tck"]
|
|
||||||
set_clock_transition -fall -min $MINFALL [get_clocks "tck"]
|
|
||||||
set_clock_transition -fall -max $MAXFALL [get_clocks "tck"]
|
|
||||||
|
|
||||||
set_clock_uncertainty $CLK_UNCERT [get_clocks "rtc_clk"]
|
|
||||||
set_clock_transition -rise -min $MINRISE [get_clocks "rtc_clk"]
|
|
||||||
set_clock_transition -rise -max $MAXRISE [get_clocks "rtc_clk"]
|
|
||||||
set_clock_transition -fall -min $MINFALL [get_clocks "rtc_clk"]
|
|
||||||
set_clock_transition -fall -max $MAXFALL [get_clocks "rtc_clk"]
|
|
||||||
|
|
||||||
|
|
||||||
set_ideal_network [get_ports "pwrup_rst_n"]
|
|
||||||
set_ideal_network [get_ports "rst_n"]
|
|
||||||
set_ideal_network [get_ports "cpu_rst_n"]
|
|
||||||
set_ideal_network [get_ports "test_rst_n"]
|
|
||||||
set_ideal_network [get_ports "trst_n"]
|
|
||||||
|
|
||||||
set_false_path -from [get_ports "pwrup_rst_n"]
|
|
||||||
set_false_path -from [get_ports "rst_n"]
|
|
||||||
set_false_path -from [get_ports "cpu_rst_n"]
|
|
||||||
set_false_path -from [get_ports "test_rst_n"]
|
|
||||||
set_false_path -from [get_ports "trst_n"]
|
|
||||||
|
|
||||||
#IO delays:
|
|
||||||
|
|
||||||
set_input_delay -clock "clk" -max $INPUT_DELAY_CLK [remove_from_collection [all_inputs] {trst_n tdi tms}]
|
|
||||||
set_input_delay -clock "clk" -min $INPUT_DELAY_CLK [remove_from_collection [all_inputs] {trst_n tdi tms}]
|
|
||||||
|
|
||||||
set_input_delay -clock "tck" -max $INPUT_DELAY_TCK [get_ports {trst_n tdi tms}]
|
|
||||||
set_input_delay -clock "tck" -min $INPUT_DELAY_TCK [get_ports {trst_n tdi tms}]
|
|
||||||
|
|
||||||
|
|
||||||
set_output_delay -clock "clk" -max $OUTPUT_DELAY_CLK [remove_from_collection [all_outputs] {tdo tdo_en}]
|
|
||||||
set_output_delay -clock "clk" -min $OUTPUT_DELAY_CLK [remove_from_collection [all_outputs] {tdo tdo_en}]
|
|
||||||
|
|
||||||
set_output_delay -clock "tck" -max $OUTPUT_DELAY_TCK [get_ports {tdo tdo_en}]
|
|
||||||
set_output_delay -clock "tck" -min $OUTPUT_DELAY_TCK [get_ports {tdo tdo_en}]
|
|
||||||
|
|
||||||
|
|
||||||
set_case_analysis 0 [get_ports "test_mode"]
|
|
||||||
|
|
||||||
# |--------------|
|
|
||||||
#->| |->
|
|
||||||
#->| clk |->
|
|
||||||
# | |
|
|
||||||
# ----------------
|
|
||||||
# | rtc |
|
|
||||||
# ----------------
|
|
||||||
#->| |->tdo
|
|
||||||
#->| tck |->tdo_en
|
|
||||||
# | |
|
|
||||||
# |--------------|
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user