mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Add synthesis using DC shell back into repository
This commit is contained in:
		
							parent
							
								
									8fd975da74
								
							
						
					
					
						commit
						00619eda07
					
				
							
								
								
									
										78
									
								
								synthDC/.synopsys_dc.setup
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										78
									
								
								synthDC/.synopsys_dc.setup
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,78 @@ | ||||
| 
 | ||||
| # Search Paths | ||||
| set CURRENT_DIR  [exec pwd] | ||||
| set search_path [list "./" ] | ||||
| 
 | ||||
| set s8lib ../addins/sky130_osu_sc_t18/18T_ms/lib | ||||
| lappend search_path $s8lib | ||||
| 
 | ||||
| # Synthetic libraries | ||||
| set synthetic_library   [list dw_foundation.sldb] | ||||
| 
 | ||||
| # Set OKSTATE standard cell libraries | ||||
| set target_library [list] | ||||
| 
 | ||||
| lappend target_library sky130_osu_sc_18T_ms_TT_1P8_25C.ccs.db | ||||
| 
 | ||||
| # Set Link Library | ||||
| set link_library "$target_library $synthetic_library" | ||||
| 
 | ||||
| # Set up DesignWare cache read and write directories to speed up compile. | ||||
| set cache_write  ~ | ||||
| set cache_read   $cache_write | ||||
| 
 | ||||
| # Tell DC where to look for files | ||||
| lappend search_path ./scripts | ||||
| lappend search_path ./hdl | ||||
| lappend search_path ./mapped | ||||
| 
 | ||||
| # Set up User Information | ||||
| set company "Oklahoma State University" | ||||
| set user    "James E. Stine" | ||||
| 
 | ||||
| # Alias | ||||
| alias ra report_area | ||||
| alias rt report_timing | ||||
| alias rc {report_constraint -all_violators} | ||||
| 
 | ||||
| alias sf set_flatten | ||||
| alias ss set_structure | ||||
| alias rco report_compile_options | ||||
| alias cs compile -scan | ||||
| alias csi compile -scan -incr -map high | ||||
| 
 | ||||
| alias h history | ||||
| history keep 100 | ||||
| alias all_gone {remove_design -designs} | ||||
|   | ||||
| alias page_on {set sh_enable_page_mode true} | ||||
| alias page_off {set sh_enable_page_mode false} | ||||
| 
 | ||||
| # specify directory for intermediate files from analyze | ||||
| define_design_lib DEFAULT -path ./analyzed | ||||
|   | ||||
| # suppress Driving cell warning | ||||
| suppress_message {UID-401} | ||||
| 
 | ||||
| ########### Source Useful Tcl Procedures ########### | ||||
| 
 | ||||
| foreach _file [glob -nocomplain ./tcl_procs/*.tcl] { | ||||
|   source $_file | ||||
| } | ||||
| 
 | ||||
| ############# Enable line editing in 2004.12 ########### | ||||
| 
 | ||||
| set sh_enable_line_editing true | ||||
| 
 | ||||
| ############# Setup the view utility ########### | ||||
| 
 | ||||
| proc view {args} { | ||||
|     redirect tmpfile1212 {uplevel $args} | ||||
|     # Without redirect, exec echos the PID of the new process to the screen | ||||
|     redirect /dev/null {exec ./tcl_procs/view.tk tmpfile1212 "$args" &} | ||||
| } | ||||
| 
 | ||||
| alias vrt {view report_timing -nosplit} | ||||
| alias vrtm {view report_timing -nosplit -delay min} | ||||
| alias vman {view man} | ||||
| 
 | ||||
							
								
								
									
										34
									
								
								synthDC/Makefile
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										34
									
								
								synthDC/Makefile
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,34 @@ | ||||
| #  
 | ||||
| #  Makefile for synthesis
 | ||||
| # 
 | ||||
| NAME := synth | ||||
| 
 | ||||
| VARIANT := 18T_ms | ||||
| 
 | ||||
| default: | ||||
| 	@echo "Basic synthesis procedure for OSU/HMC/UNLV:" | ||||
| 	@echo " adapt Makefile to your liking..." | ||||
| 	@echo | ||||
| 
 | ||||
| synth: | ||||
| 	@sed -i 's/18T_ms/${VARIANT}/g' scripts/synth.tcl | ||||
| 	@sed -i 's/18T_ms/${VARIANT}/g' .synopsys_dc.setup | ||||
| 	@echo "DC Synthesis" | ||||
| 	@mkdir -p reports | ||||
| 	@mkdir -p mapped | ||||
| 	dc_shell-xg-t -64bit -f scripts/$(NAME).tcl | tee $(NAME).out | ||||
| #	@cp mapped/*.sdc ../../outputs/
 | ||||
| #	@cp mapped/*.vh ../../outputs/
 | ||||
| #	@sed -i 's/${VARIANT}/18T_ms/g' scripts/synth.tcl
 | ||||
| #	@sed -i 's/${VARIANT}/18T_ms/g' .synopsys_dc.setup
 | ||||
| 
 | ||||
| clean: | ||||
| 	rm -rf  alib-52 WORK mapped unmapped reports analyzed $(NAME).out | ||||
| 	mkdir mapped unmapped reports | ||||
| 	rm -f hdl/* | ||||
| 	rm -f default.svf | ||||
| 	rm -f command.log | ||||
| 	rm -f filenames*.log | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										34
									
								
								synthDC/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								synthDC/README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | ||||
| This subdirectory contains synthesis scripts for use with Synopsys | ||||
| Design Compiler (DC).  The scripts are separated into two distinct | ||||
| sections: user and technology setups.  The technology setup is found | ||||
| in .synopsys_dc.setup file.  Key items within this technology setup | ||||
| are the location of the PDK and standard cell libraries. | ||||
| 
 | ||||
| We are using the Skywater Technology 130nm process for the synthesis. | ||||
| The Oklahoma State University standard-cell libraries for this process | ||||
| are located via the target_library keyword.  There are currently three | ||||
| versions of the standard-cell libraries available (see | ||||
| http://stineje.github.io) for dowload locations.  Currently, the TT 18 | ||||
| track OSU standard-cell library is utilized. | ||||
| 
 | ||||
| There are other useful elements within the technology setup file, as | ||||
| well.  These include user information as well as search path | ||||
| information.  Good tool flows usually rely on finding the right files | ||||
| correctly and having a search path set correctly is importantly. | ||||
| 
 | ||||
| The user setup is found in two main areas.  The scripts/ and hdl/ | ||||
| directories.  The scripts directory contains a basic DC synthesis Tcl | ||||
| script that is involved when synthesis is run.  Please modify this | ||||
| synth.tcl file to add information about PPA and information about your | ||||
| design (e.g., top-level name, SV files).  The SV is found within the | ||||
| hdl/ subdirectory.  Just put all your synthesis-friendly files in this | ||||
| directory or allude to the correct location in the synthesis Tcl | ||||
| script. | ||||
| 
 | ||||
| After synthesis completes, always check your synthesis log file that | ||||
| will be called synth.log.  Good tool flow starts and ends with | ||||
| understanding what is happening during a specific part of the flow. | ||||
| This can only be done through interpreting what the Electronic Design | ||||
| Automation (EDA) tool is doing.  So, always check this file for any | ||||
| possible warnings or errors after completion.  All output of synthesis | ||||
| is found in the reports/ subdirectory. | ||||
							
								
								
									
										184
									
								
								synthDC/scripts/synth.tcl
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										184
									
								
								synthDC/scripts/synth.tcl
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,184 @@ | ||||
| # | ||||
| # Main Synopsys Flow | ||||
| # james.stine@okstate.edu 26 Jan 2022 | ||||
| # | ||||
| 
 | ||||
| # Config | ||||
| set hdl_src "../pipelined/src" | ||||
| 
 | ||||
| eval file copy ${hdl_src}/../config/rv64gc/wally-config.vh {hdl/} | ||||
| eval file copy ${hdl_src}/../config/rv64gc/wally-config.vh {reports/} | ||||
| eval file copy [glob ${hdl_src}/../config/shared/*.vh] {hdl/} | ||||
| eval file copy [glob ${hdl_src}/*/*.sv] {hdl/} | ||||
| eval file copy [glob ${hdl_src}/*/flop/*.sv] {hdl/} | ||||
| 
 | ||||
| # Verilog files | ||||
| set my_verilog_files [glob hdl/*] | ||||
| 
 | ||||
| # Set toplevel | ||||
| set my_toplevel wallypipelinedcore | ||||
| 
 | ||||
| # Set number of significant digits | ||||
| set report_default_significant_digits 6 | ||||
| 
 | ||||
| # V(HDL) Unconnectoed Pins Output | ||||
| set verilogout_show_unconnected_pins "true" | ||||
| set vhdlout_show_unconnected_pins "true" | ||||
| 
 | ||||
| # | ||||
| # Due to parameterized Verilog must use analyze/elaborate and not  | ||||
| # read_verilog/vhdl (change to pull in Verilog and/or VHDL) | ||||
| # | ||||
| define_design_lib WORK -path ./WORK | ||||
| analyze -f sverilog -lib WORK $my_verilog_files | ||||
| 
 | ||||
| # | ||||
| # Added if you had any VHDL | ||||
| # analyze -f vhdl -lib WORK $my_vhdl_files | ||||
| # | ||||
| elaborate $my_toplevel -lib WORK  | ||||
| 
 | ||||
| # Set the current_design  | ||||
| current_design $my_toplevel | ||||
| link | ||||
| 
 | ||||
| # Reset all constraints  | ||||
| reset_design | ||||
| 
 | ||||
| # Set Frequency in [MHz] or [ps] | ||||
| set my_clock_pin clk | ||||
| set my_clk_freq_MHz 10 | ||||
| set my_period [expr 1000 / $my_clk_freq_MHz] | ||||
| set my_uncertainty [expr .1 * $my_period] | ||||
| 
 | ||||
| # Create clock object  | ||||
| set find_clock [ find port [list $my_clock_pin] ] | ||||
| if {  $find_clock != [list] } { | ||||
|     echo "Found clock!" | ||||
|     set my_clk $my_clock_pin | ||||
|     create_clock -period $my_period $my_clk | ||||
|     set_clock_uncertainty $my_uncertainty [get_clocks $my_clk] | ||||
| } else { | ||||
|     echo "Did not find clock! Design is probably combinational!" | ||||
|     set my_clk vclk | ||||
|     create_clock -period $my_period -name $my_clk | ||||
| } | ||||
| 
 | ||||
| # Partitioning - flatten or hierarchically synthesize | ||||
| #ungroup -flatten -simple_names { dp* } | ||||
| #ungroup -flatten -simple_names { c* } | ||||
| #ungroup -all -flatten -simple_names | ||||
| 
 | ||||
| # Set input pins except clock | ||||
| set all_in_ex_clk [remove_from_collection [all_inputs] [get_ports $my_clk]] | ||||
| 
 | ||||
| # Specifies delays be propagated through the clock network | ||||
| set_propagated_clock [get_clocks $my_clk] | ||||
| 
 | ||||
| # Setting constraints on input ports  | ||||
| set_driving_cell  -lib_cell sky130_osu_sc_18T_ms__dff_1 -pin Q $all_in_ex_clk | ||||
| 
 | ||||
| # Set input/output delay | ||||
| set_input_delay 0.0 -max -clock $my_clk $all_in_ex_clk | ||||
| set_output_delay 0.0 -max -clock $my_clk [all_outputs] | ||||
| 
 | ||||
| # Setting load constraint on output ports  | ||||
| set_load [expr [load_of sky130_osu_sc_18T_ms_TT_1P8_25C.ccs/sky130_osu_sc_18T_ms__dff_1/D] * 1] [all_outputs] | ||||
| 
 | ||||
| # Set the wire load model  | ||||
| set_wire_load_mode "top" | ||||
| 
 | ||||
| # Attempt Area Recovery - if looking for minimal area | ||||
| # set_max_area 2000 | ||||
| 
 | ||||
| # Set fanout | ||||
| set_max_fanout 6 $all_in_ex_clk | ||||
| 
 | ||||
| # Fix hold time violations | ||||
| set_fix_hold [all_clocks] | ||||
| 
 | ||||
| # Deal with constants and buffers to isolate ports | ||||
| set_fix_multiple_port_nets -all -buffer_constants | ||||
| 
 | ||||
| # setting up the group paths to find out the required timings | ||||
| #group_path -name OUTPUTS -to [all_outputs] | ||||
| #group_path -name INPUTS -from [all_inputs]  | ||||
| #group_path -name COMBO -from [all_inputs] -to [all_outputs] | ||||
| 
 | ||||
| # Save Unmapped Design | ||||
| set filename [format "%s%s%s"  "unmapped/" $my_toplevel ".ddc"] | ||||
| write_file -format ddc -hierarchy -o $filename | ||||
| 
 | ||||
| # Compile statements - either compile or compile_ultra | ||||
| compile -scan -incr -map_effort low | ||||
| # compile_ultra -no_seq_output_inversion -no_boundary_optimization | ||||
| 
 | ||||
| # Eliminate need for assign statements (yuck!) | ||||
| set verilogout_no_tri true | ||||
| set verilogout_equation false | ||||
| 
 | ||||
| # setting to generate output files | ||||
| set write_v    1        ;# generates structual netlist | ||||
| set write_sdc  1	;# generates synopsys design constraint file for p&r | ||||
| set write_ddc  1	;# compiler file in ddc format | ||||
| set write_sdf  1	;# sdf file for backannotated timing sim | ||||
| set write_pow  1 	;# genrates estimated power report | ||||
| set write_rep  1	;# generates estimated area and timing report | ||||
| set write_cst  1        ;# generate report of constraints | ||||
| set write_hier 1        ;# generate hierarchy report | ||||
| 
 | ||||
| # Report Constraint Violators | ||||
| set filename [format "%s%s%s"  "reports/" $my_toplevel "_constraint_all_violators.rpt"] | ||||
| redirect $filename {report_constraint -all_violators} | ||||
| 
 | ||||
| # Check design | ||||
| redirect reports/check_design.rpt { check_design } | ||||
| 
 | ||||
| # Report Final Netlist (Hierarchical) | ||||
| set filename [format "%s%s%s"  "mapped/" $my_toplevel ".vh"] | ||||
| write_file -f verilog -hierarchy -output $filename | ||||
| 
 | ||||
| set filename [format "%s%s%s"  "mapped/" $my_toplevel ".sdc"] | ||||
| write_sdc $filename | ||||
| 
 | ||||
| set filename [format "%s%s%s"  "mapped/" $my_toplevel ".ddc"] | ||||
| write_file -format ddc -hierarchy -o $filename | ||||
| 
 | ||||
| set filename [format "%s%s%s"  "mapped/" $my_toplevel ".sdf"] | ||||
| write_sdf $filename | ||||
| 
 | ||||
| # QoR | ||||
| set filename [format "%s%s%s"  "reports/" $my_toplevel "_qor.rep"] | ||||
| redirect $filename { report_qor } | ||||
| 
 | ||||
| # Report Timing | ||||
| set filename [format "%s%s%s"  "reports/" $my_toplevel "_reportpath.rep"] | ||||
| redirect $filename { report_path_group } | ||||
| 
 | ||||
| set filename [format "%s%s%s"  "reports/" $my_toplevel "_report_clock.rep"] | ||||
| redirect $filename { report_clock } | ||||
| 
 | ||||
| set filename [format "%s%s%s" "reports/" $my_toplevel "_timing.rep"] | ||||
| redirect $filename { report_timing -capacitance -transition_time -nets -nworst 1 } | ||||
| 
 | ||||
| set filename [format "%s%s%s" "reports/" $my_toplevel "_min_timing.rep"] | ||||
| redirect $filename { report_timing -delay min } | ||||
| 
 | ||||
| set filename [format "%s%s%s" "reports/" $my_toplevel "_area.rep"] | ||||
| redirect $filename { report_area -hierarchy -nosplit -physical -designware} | ||||
| 
 | ||||
| set filename [format "%s%s%s" "reports/" $my_toplevel "_cell.rep"] | ||||
| redirect $filename { report_cell [get_cells -hier *] } | ||||
| 
 | ||||
| set filename [format "%s%s%s" "reports/" $my_toplevel "_power.rep"] | ||||
| redirect $filename { report_power } | ||||
| 
 | ||||
| set filename [format "%s%s%s" "reports/" $my_toplevel "_constraint.rep"] | ||||
| redirect $filename { report_constraint } | ||||
| 
 | ||||
| set filename [format "%s%s%s" "reports/" $my_toplevel "_hier.rep"] | ||||
| redirect $filename { report_hierarchy } | ||||
| 
 | ||||
| # Quit | ||||
| quit | ||||
| 
 | ||||
							
								
								
									
										184
									
								
								synthDC/scripts/synth.tcl~
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										184
									
								
								synthDC/scripts/synth.tcl~
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,184 @@ | ||||
| # | ||||
| # Main Synopsys Flow | ||||
| # james.stine@okstate.edu 26 Jan 2022 | ||||
| # | ||||
| 
 | ||||
| # Config | ||||
| set hdl_src "../pipelined/src" | ||||
| 
 | ||||
| eval file copy ${hdl_src}/../config/rv64gc/wally-config.vh {hdl/} | ||||
| eval file copy ${hdl_src}/../config/rv64gc/wally-config.vh {reports/} | ||||
| eval file copy [glob ${hdl_src}/../config/shared/*.vh] {hdl/} | ||||
| eval file copy [glob ${hdl_src}/*/*.sv] {hdl/} | ||||
| eval file copy [glob ${hdl_src}/*/flop/*.sv] {hdl/} | ||||
| 
 | ||||
| # Verilog files | ||||
| set my_verilog_files [glob hdl/*] | ||||
| 
 | ||||
| # Set toplevel | ||||
| set my_toplevel wallypipelinedcore | ||||
| 
 | ||||
| # Set number of significant digits | ||||
| set report_default_significant_digits 6 | ||||
| 
 | ||||
| # V(HDL) Unconnectoed Pins Output | ||||
| set verilogout_show_unconnected_pins "true" | ||||
| set vhdlout_show_unconnected_pins "true" | ||||
| 
 | ||||
| # | ||||
| # Due to parameterized Verilog must use analyze/elaborate and not  | ||||
| # read_verilog/vhdl (change to pull in Verilog and/or VHDL) | ||||
| # | ||||
| define_design_lib WORK -path ./WORK | ||||
| analyze -f sverilog -lib WORK $my_verilog_files | ||||
| 
 | ||||
| # | ||||
| # Added if you had any VHDL | ||||
| # analyze -f vhdl -lib WORK $my_vhdl_files | ||||
| # | ||||
| elaborate $my_toplevel -lib WORK  | ||||
| 
 | ||||
| # Set the current_design  | ||||
| current_design $my_toplevel | ||||
| link | ||||
| 
 | ||||
| # Reset all constraints  | ||||
| reset_design | ||||
| 
 | ||||
| # Set Frequency in [MHz] or [ps] | ||||
| set my_clock_pin clk | ||||
| set my_clk_freq_MHz 25 | ||||
| set my_period [expr 1000 / $my_clk_freq_MHz] | ||||
| set my_uncertainty [expr .1 * $my_period] | ||||
| 
 | ||||
| # Create clock object  | ||||
| set find_clock [ find port [list $my_clock_pin] ] | ||||
| if {  $find_clock != [list] } { | ||||
|     echo "Found clock!" | ||||
|     set my_clk $my_clock_pin | ||||
|     create_clock -period $my_period $my_clk | ||||
|     set_clock_uncertainty $my_uncertainty [get_clocks $my_clk] | ||||
| } else { | ||||
|     echo "Did not find clock! Design is probably combinational!" | ||||
|     set my_clk vclk | ||||
|     create_clock -period $my_period -name $my_clk | ||||
| } | ||||
| 
 | ||||
| # Partitioning - flatten or hierarchically synthesize | ||||
| #ungroup -flatten -simple_names { dp* } | ||||
| #ungroup -flatten -simple_names { c* } | ||||
| #ungroup -all -flatten -simple_names | ||||
| 
 | ||||
| # Set input pins except clock | ||||
| set all_in_ex_clk [remove_from_collection [all_inputs] [get_ports $my_clk]] | ||||
| 
 | ||||
| # Specifies delays be propagated through the clock network | ||||
| set_propagated_clock [get_clocks $my_clk] | ||||
| 
 | ||||
| # Setting constraints on input ports  | ||||
| set_driving_cell  -lib_cell sky130_osu_sc_18T_ms__dff_1 -pin Q $all_in_ex_clk | ||||
| 
 | ||||
| # Set input/output delay | ||||
| set_input_delay 0.0 -max -clock $my_clk $all_in_ex_clk | ||||
| set_output_delay 0.0 -max -clock $my_clk [all_outputs] | ||||
| 
 | ||||
| # Setting load constraint on output ports  | ||||
| set_load [expr [load_of sky130_osu_sc_18T_ms_TT_1P8_25C.ccs/sky130_osu_sc_18T_ms__dff_1/D] * 1] [all_outputs] | ||||
| 
 | ||||
| # Set the wire load model  | ||||
| set_wire_load_mode "top" | ||||
| 
 | ||||
| # Attempt Area Recovery - if looking for minimal area | ||||
| # set_max_area 2000 | ||||
| 
 | ||||
| # Set fanout | ||||
| set_max_fanout 6 $all_in_ex_clk | ||||
| 
 | ||||
| # Fix hold time violations | ||||
| set_fix_hold [all_clocks] | ||||
| 
 | ||||
| # Deal with constants and buffers to isolate ports | ||||
| set_fix_multiple_port_nets -all -buffer_constants | ||||
| 
 | ||||
| # setting up the group paths to find out the required timings | ||||
| #group_path -name OUTPUTS -to [all_outputs] | ||||
| #group_path -name INPUTS -from [all_inputs]  | ||||
| #group_path -name COMBO -from [all_inputs] -to [all_outputs] | ||||
| 
 | ||||
| # Save Unmapped Design | ||||
| set filename [format "%s%s%s"  "unmapped/" $my_toplevel ".ddc"] | ||||
| write_file -format ddc -hierarchy -o $filename | ||||
| 
 | ||||
| # Compile statements - either compile or compile_ultra | ||||
| compile -scan -incr -map_effort high | ||||
| # compile_ultra -no_seq_output_inversion -no_boundary_optimization | ||||
| 
 | ||||
| # Eliminate need for assign statements (yuck!) | ||||
| set verilogout_no_tri true | ||||
| set verilogout_equation false | ||||
| 
 | ||||
| # setting to generate output files | ||||
| set write_v    1        ;# generates structual netlist | ||||
| set write_sdc  1	;# generates synopsys design constraint file for p&r | ||||
| set write_ddc  1	;# compiler file in ddc format | ||||
| set write_sdf  1	;# sdf file for backannotated timing sim | ||||
| set write_pow  1 	;# genrates estimated power report | ||||
| set write_rep  1	;# generates estimated area and timing report | ||||
| set write_cst  1        ;# generate report of constraints | ||||
| set write_hier 1        ;# generate hierarchy report | ||||
| 
 | ||||
| # Report Constraint Violators | ||||
| set filename [format "%s%s%s"  "reports/" $my_toplevel "_constraint_all_violators.rpt"] | ||||
| redirect $filename {report_constraint -all_violators} | ||||
| 
 | ||||
| # Check design | ||||
| redirect reports/check_design.rpt { check_design } | ||||
| 
 | ||||
| # Report Final Netlist (Hierarchical) | ||||
| set filename [format "%s%s%s"  "mapped/" $my_toplevel ".vh"] | ||||
| write_file -f verilog -hierarchy -output $filename | ||||
| 
 | ||||
| set filename [format "%s%s%s"  "mapped/" $my_toplevel ".sdc"] | ||||
| write_sdc $filename | ||||
| 
 | ||||
| set filename [format "%s%s%s"  "mapped/" $my_toplevel ".ddc"] | ||||
| write_file -format ddc -hierarchy -o $filename | ||||
| 
 | ||||
| set filename [format "%s%s%s"  "mapped/" $my_toplevel ".sdf"] | ||||
| write_sdf $filename | ||||
| 
 | ||||
| # QoR | ||||
| set filename [format "%s%s%s"  "reports/" $my_toplevel "_qor.rep"] | ||||
| redirect $filename { report_qor } | ||||
| 
 | ||||
| # Report Timing | ||||
| set filename [format "%s%s%s"  "reports/" $my_toplevel "_reportpath.rep"] | ||||
| redirect $filename { report_path_group } | ||||
| 
 | ||||
| set filename [format "%s%s%s"  "reports/" $my_toplevel "_report_clock.rep"] | ||||
| redirect $filename { report_clock } | ||||
| 
 | ||||
| set filename [format "%s%s%s" "reports/" $my_toplevel "_timing.rep"] | ||||
| redirect $filename { report_timing -capacitance -transition_time -nets -nworst 1 } | ||||
| 
 | ||||
| set filename [format "%s%s%s" "reports/" $my_toplevel "_min_timing.rep"] | ||||
| redirect $filename { report_timing -delay min } | ||||
| 
 | ||||
| set filename [format "%s%s%s" "reports/" $my_toplevel "_area.rep"] | ||||
| redirect $filename { report_area -hierarchy -nosplit -physical -designware} | ||||
| 
 | ||||
| set filename [format "%s%s%s" "reports/" $my_toplevel "_cell.rep"] | ||||
| redirect $filename { report_cell [get_cells -hier *] } | ||||
| 
 | ||||
| set filename [format "%s%s%s" "reports/" $my_toplevel "_power.rep"] | ||||
| redirect $filename { report_power } | ||||
| 
 | ||||
| set filename [format "%s%s%s" "reports/" $my_toplevel "_constraint.rep"] | ||||
| redirect $filename { report_constraint } | ||||
| 
 | ||||
| set filename [format "%s%s%s" "reports/" $my_toplevel "_hier.rep"] | ||||
| redirect $filename { report_hierarchy } | ||||
| 
 | ||||
| # Quit | ||||
| quit | ||||
| 
 | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user