From b3e4839f88b1896e96a644bfc81b205492044486 Mon Sep 17 00:00:00 2001 From: David Harris Date: Wed, 9 Feb 2022 12:07:24 +0000 Subject: [PATCH 1/3] Introduce bugs for lab 3 --- pipelined/src/ieu/alu.sv | 2 +- pipelined/src/ieu/controller.sv | 2 +- pipelined/src/ieu/datapath.sv | 2 +- pipelined/testbench/testbench.sv | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pipelined/src/ieu/alu.sv b/pipelined/src/ieu/alu.sv index 50100c3c..5abf5850 100644 --- a/pipelined/src/ieu/alu.sv +++ b/pipelined/src/ieu/alu.sv @@ -67,7 +67,7 @@ module alu #(parameter WIDTH=32) ( // SLT assign SLT = {{(WIDTH-1){1'b0}}, LT}; - assign SLTU = {{(WIDTH-1){1'b0}}, LTU}; + assign SLTU = {{(WIDTH-1){1'b0}}, LT}; // Select appropriate ALU Result assign ALUFunct = Funct3 & {3{ALUOp}}; // Force ALUFunct to 0 to Add when ALUOp = 0 diff --git a/pipelined/src/ieu/controller.sv b/pipelined/src/ieu/controller.sv index bde552ab..87380432 100644 --- a/pipelined/src/ieu/controller.sv +++ b/pipelined/src/ieu/controller.sv @@ -98,7 +98,7 @@ module controller( logic InstrValidD, InstrValidE; logic PrivilegedD, PrivilegedE; logic InvalidateICacheE, FlushDCacheE; - logic [`CTRLW-1:0] ControlsD; + logic ControlsD; logic SubArithD; logic subD, sraD, sltD, sltuD; logic BranchTakenE; diff --git a/pipelined/src/ieu/datapath.sv b/pipelined/src/ieu/datapath.sv index aa43a5b1..d0e44349 100644 --- a/pipelined/src/ieu/datapath.sv +++ b/pipelined/src/ieu/datapath.sv @@ -104,7 +104,7 @@ module datapath ( flopenrc #(`XLEN) RD2EReg(clk, reset, FlushE, ~StallE, R2D, R2E); flopenrc #(`XLEN) ExtImmEReg(clk, reset, FlushE, ~StallE, ExtImmD, ExtImmE); flopenrc #(5) Rs1EReg(clk, reset, FlushE, ~StallE, Rs1D, Rs1E); - flopenrc #(5) Rs2EReg(clk, reset, FlushE, ~StallE, Rs2D, Rs2E); + flopenrc #(5) Rs2EReg(clk, reset, FlushE, ~StallE, Rs2D, Rs1E); flopenrc #(5) RdEReg(clk, reset, FlushE, ~StallE, RdD, RdE); mux3 #(`XLEN) faemux(R1E, WriteDataW, ResultM, ForwardAE, ForwardedSrcAE); diff --git a/pipelined/testbench/testbench.sv b/pipelined/testbench/testbench.sv index 3117c111..79d3a46b 100644 --- a/pipelined/testbench/testbench.sv +++ b/pipelined/testbench/testbench.sv @@ -296,7 +296,7 @@ logic [3:0] dummy; ProgramAddrMapFile = {pathname, tests[test], ".elf.objdump.addr"}; ProgramLabelMapFile = {pathname, tests[test], ".elf.objdump.lab"}; $display("Read memfile %s", memfilename); - reset_ext = 1; # 47; reset_ext = 0; + reset_ext = 1; # 47; //reset_ext = 0; end end end // always @ (negedge clk) From 8a5321dab9b223ac18b05defc30d7bd04d628b1d Mon Sep 17 00:00:00 2001 From: David Harris Date: Wed, 9 Feb 2022 12:09:49 +0000 Subject: [PATCH 2/3] Testing push --- pipelined/src/ieu/controller.sv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelined/src/ieu/controller.sv b/pipelined/src/ieu/controller.sv index 87380432..eb8878c7 100644 --- a/pipelined/src/ieu/controller.sv +++ b/pipelined/src/ieu/controller.sv @@ -101,7 +101,7 @@ module controller( logic ControlsD; logic SubArithD; logic subD, sraD, sltD, sltuD; - logic BranchTakenE; + logic BranchTakenE; logic eqE, ltE, ltuE; logic unused; logic BranchFlagE; From 99b388f8fea0dd0ff3e671c4f454ee30aa8fc767 Mon Sep 17 00:00:00 2001 From: David Harris Date: Wed, 9 Feb 2022 17:58:36 +0000 Subject: [PATCH 3/3] Updated synthesis scripts --- synthDC/.synopsys_dc.setup | 11 ++- synthDC/scripts/synth.tcl | 176 ++++++++++++++++++++++++++++++++----- 2 files changed, 162 insertions(+), 25 deletions(-) mode change 100755 => 100644 synthDC/scripts/synth.tcl diff --git a/synthDC/.synopsys_dc.setup b/synthDC/.synopsys_dc.setup index f5d7f0ec..f3c9458b 100755 --- a/synthDC/.synopsys_dc.setup +++ b/synthDC/.synopsys_dc.setup @@ -3,8 +3,12 @@ set CURRENT_DIR [exec pwd] set search_path [list "./" ] -set s8lib ../addins/sky130_osu_sc_t12/12T_ms/lib -lappend search_path $s8lib +#set timing_lib "$::env(RISCV)/cad/lib" +set timing_lib "/opt/riscv/cad/lib" +lappend search_path $timing_lib +#set s8lib ../addins/sky130_osu_sc_t12/12T_ms/lib +#lappend search_path $s8lib + # Synthetic libraries set synthetic_library [list dw_foundation.sldb] @@ -12,7 +16,8 @@ set synthetic_library [list dw_foundation.sldb] # Set OKSTATE standard cell libraries set target_library [list] -lappend target_library sky130_osu_sc_12T_ms_TT_1P8_25C.ccs.db +lappend target_library scc9gena_tt_1.2v_25C.db +#lappend target_library sky130_osu_sc_12T_ms_TT_1P8_25C.ccs.db # Set Link Library set link_library "$target_library $synthetic_library" diff --git a/synthDC/scripts/synth.tcl b/synthDC/scripts/synth.tcl old mode 100755 new mode 100644 index 23a30593..81bf1cea --- a/synthDC/scripts/synth.tcl +++ b/synthDC/scripts/synth.tcl @@ -1,13 +1,14 @@ # -# Main Synopsys Flow -# james.stine@okstate.edu 26 Jan 2022 +# OKSTATE Main Synopsys Flow +# Updated Sep 27, 2015 jes # # Config -set hdl_src "../pipelined/src" +set hdl_src "../../../pipelined/src" +set cfg "${hdl_src}/../config/rv32e/wally-config.vh" -eval file copy -force ${hdl_src}/../config/rv32e/wally-config.vh {hdl/} -eval file copy -force ${hdl_src}/../config/rv32e/wally-config.vh {reports/} +eval file copy -force ${cfg} {hdl/} +eval file copy -force ${cfg} {reports/} eval file copy -force [glob ${hdl_src}/../config/shared/*.vh] {hdl/} eval file copy -force [glob ${hdl_src}/*/*.sv] {hdl/} eval file copy -force [glob ${hdl_src}/*/flop/*.sv] {hdl/} @@ -16,7 +17,7 @@ eval file copy -force [glob ${hdl_src}/*/flop/*.sv] {hdl/} set my_verilog_files [glob hdl/*] # Set toplevel -set my_toplevel wallypipelinedcore +set my_toplevel $::env(DESIGN) # Set number of significant digits set report_default_significant_digits 6 @@ -25,7 +26,6 @@ set report_default_significant_digits 6 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) # @@ -45,11 +45,14 @@ link # Reset all constraints reset_design +# Set reset false path +set_false_path -from [get_ports reset_ext] + # Set Frequency in [MHz] or [ps] set my_clock_pin clk -set my_clk_freq_MHz 500 -set my_period [expr 1000 / $my_clk_freq_MHz] -set my_uncertainty [expr .1 * $my_period] +set my_uncertainty 0.0 +set my_clk_freq_MHz $::env(FREQ) +set my_period [expr 1000.0 / $my_clk_freq_MHz] # Create clock object set find_clock [ find port [list $my_clock_pin] ] @@ -65,25 +68,25 @@ if { $find_clock != [list] } { } # 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] +#set_propagated_clock [get_clocks $my_clk] # Setting constraints on input ports -set_driving_cell -lib_cell sky130_osu_sc_12T_ms__dff_1 -pin Q $all_in_ex_clk +set_driving_cell -lib_cell scc9gena_dfxbp_1 -pin Q $all_in_ex_clk +#set_driving_cell -lib_cell sky130_osu_sc_12T_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_12T_ms_TT_1P8_25C.ccs/sky130_osu_sc_12T_ms__dff_1/D] * 1] [all_outputs] +set_load [expr [load_of scc9gena_tt_1.2v_25C/scc9gena_dfxbp_1/D] * 1] [all_outputs] +#set_load [expr [load_of sky130_osu_sc_12T_ms_TT_1P8_25C.ccs/sky130_osu_sc_12T_ms__dff_1/D] * 1] [all_outputs] # Set the wire load model set_wire_load_mode "top" @@ -95,7 +98,7 @@ set_wire_load_mode "top" set_max_fanout 6 $all_in_ex_clk # Fix hold time violations -set_fix_hold [all_clocks] +#set_fix_hold [all_clocks] # Deal with constants and buffers to isolate ports set_fix_multiple_port_nets -all -buffer_constants @@ -109,8 +112,7 @@ set_fix_multiple_port_nets -all -buffer_constants 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 statements compile_ultra -no_seq_output_inversion -no_boundary_optimization # Eliminate need for assign statements (yuck!) @@ -161,6 +163,137 @@ 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 "_per_module_timing.rep"] +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through ifu ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ifu/*} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through ieu ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ieu/*} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through lsu ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {lsu/*} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through ebu (ahblite) ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ebu/*} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through mdu ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {mdu/*} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through hzu ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {hzu/*} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through priv ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {priv/*} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through fpu ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {fpu/*} -nworst 1 } + +set filename [format "%s%s%s" "reports/" $my_toplevel "_mdu_timing.rep"] +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through entire mdu ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {mdu/*} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through multiply unit ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {mdu/genblk1.mul/*} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through redundant multiplier ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {mdu/genblk1.mul/bigmul/*} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through ProdM (mul output) ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {mdu/genblk1.ProdM} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through PP0E (mul partial product) ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {mdu/genblk1.mul/PP0E} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through divide unit ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {mdu/genblk1.div/*} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through QuotM (div output) ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {mdu/genblk1.QuotM} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through RemM (div output) ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {mdu/genblk1.RemM} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through div/WNextE ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {mdu/genblk1.div/WNextE} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through div/XQNextE ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {mdu/genblk1.div/XQNextE} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through div/DAbsBE ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {mdu/genblk1.div/DAbsBE} -nworst 1 } + +# set filename [format "%s%s%s" "reports/" $my_toplevel "_fpu_timing.rep"] +# redirect $filename { echo "\n\n\n//////////////// Critical paths through fma ////////////////\n\n\n" } +# redirect -append $filename { report_timing -capacitance -transition_time -nets -through {fpu/fpu.fma/*} -nworst 1 } +# redirect -append $filename { echo "\n\n\n//////////////// Critical paths through fpdiv ////////////////\n\n\n" } +# redirect -append $filename { report_timing -capacitance -transition_time -nets -through {fpu/fpu.fdivsqrt/*} -nworst 1 } +# redirect -append $filename { echo "\n\n\n//////////////// Critical paths through faddcvt ////////////////\n\n\n" } +# redirect -append $filename { report_timing -capacitance -transition_time -nets -through {fpu/fpu.faddcvt/*} -nworst 1 } + +set filename [format "%s%s%s" "reports/" $my_toplevel "_ifu_timing.rep"] +redirect -append $filename { echo "\n\n\n//////////////// Critical path through PCF ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ifu/PCF} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through PCNextF ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ifu/PCNextF} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through FinalInstrRawF ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ifu/FinalInstrRawF} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through InstrD ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ifu/decomp/InstrD} -nworst 1 } + +set filename [format "%s%s%s" "reports/" $my_toplevel "_stall_flush_timing.rep"] +redirect -append $filename { echo "\n\n\n//////////////// Critical path through StallD ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ieu/StallD} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through StallE ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ieu/StallE} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through StallM ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ieu/StallM} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through StallW ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ieu/StallW} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through FlushD ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ieu/FlushD} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through FlushE ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ieu/FlushE} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through FlushM ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ieu/FlushM} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through FlushW ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ieu/FlushW} -nworst 1 } + +set filename [format "%s%s%s" "reports/" $my_toplevel "_ieu_timing.rep"] +redirect -append $filename { echo "\n\n\n//////////////// Critical path through datapath/RD1D ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ieu/dp/RD1D} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through datapath/RD2D ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ieu/dp/RD2D} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through datapath/PreSrcAE ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ieu/dp/PreSrcAE} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through datapath/SrcAE ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ieu/dp/SrcAE} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through datapath/ALUResultE ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ieu/dp/ALUResultE} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through datapath/WriteDataE ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ieu/dp/WriteDataE} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through dataphath/ResultM ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ieu/dp/ResultM} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through datapath/WriteDataW ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ieu/dp/WriteDataW} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical path through datapath/ReadDataM ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ieu/dp/ReadDataM} -nworst 1 } + +set filename [format "%s%s%s" "reports/" $my_toplevel "_fpu_timing.rep"] +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through fma ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {fpu/fpu.fma/*} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through fpdiv ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {fpu/fpu.fdivsqrt/*} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through faddcvt ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {fpu/fpu.faddcvt/*} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through FMAResM ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {fpu/fpu.FMAResM} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through FDivResM ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {fpu/fpu.FDivResM} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through FResE ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {fpu/fpu.FResE} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through fma/SumE ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {fpu/fpu.fma/SumE} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through fma/ProdExpE ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {fpu/fpu.fma/ProdExpE} -nworst 1 } + +set filename [format "%s%s%s" "reports/" $my_toplevel "_mmu_timing.rep"] +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through immu/physicaladdress ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {ifu/immu/PhysicalAddress} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through dmmu/physicaladdress ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {lsu/dmmu/PhysicalAddress} -nworst 1 } + +set filename [format "%s%s%s" "reports/" $my_toplevel "_priv_timing.rep"] +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through priv/TrapM ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {priv/TrapM} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through priv/CSRReadValM ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {priv/csr/CSRReadValM} -nworst 1 } +redirect -append $filename { echo "\n\n\n//////////////// Critical paths through priv/CSRReadValW ////////////////\n\n\n" } +redirect -append $filename { report_timing -capacitance -transition_time -nets -through {priv/CSRReadValW} -nworst 1 } + + set filename [format "%s%s%s" "reports/" $my_toplevel "_min_timing.rep"] redirect $filename { report_timing -delay min } @@ -171,7 +304,7 @@ 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 } +redirect $filename { report_power -hierarchy -levels 1 } set filename [format "%s%s%s" "reports/" $my_toplevel "_constraint.rep"] redirect $filename { report_constraint } @@ -179,6 +312,5 @@ redirect $filename { report_constraint } set filename [format "%s%s%s" "reports/" $my_toplevel "_hier.rep"] redirect $filename { report_hierarchy } -# Quit -quit - +#Quit +#quit # *** commented out so we can stay in the synopsis terminal after synthesis is done.