| source ./scripts/utils/utils.tcl |
| |
| proc set_core_dims {args} { |
| set options {{-log_path required}} |
| parse_key_args "set_core_dims" args values $options |
| set log_path $values(-log_path) |
| set FpOutDef $::env(ioPlacer_tmp_file_tag).def |
| set def_units $::env(DEF_UNITS_PER_MACRON) |
| set coreinfo [join [exec $::env(SCRIPTS_DIR)/extract_coreinfo.sh $FpOutDef] " "] |
| set sites_per_row [lindex $coreinfo 8] |
| set step [lindex $coreinfo 9] |
| set core_area_llx [expr { [lindex $coreinfo 4]/double($def_units) }] |
| set core_area_urx [expr { ([lindex $coreinfo 6]+$step*$sites_per_row)/double($def_units) }] |
| set core_area_lly [expr { [lindex $coreinfo 5]/double($def_units) }] |
| set core_area_ury [expr { [lindex $coreinfo 7]/double($def_units) }] |
| set ::env(CORE_WIDTH) [expr {$core_area_urx - $core_area_llx} ] |
| set ::env(CORE_HEIGHT) [expr {$core_area_ury - $core_area_lly} ] |
| puts "$::env(CORE_WIDTH) $::env(CORE_HEIGHT)" |
| } |
| |
| proc gen_cts_config {args} { |
| set options {{-verilog required} {-def required} \ |
| {-root_buffer required} |
| {-output required} |
| {-toler required} {-target_skew required}} |
| parse_key_args "gen_cts_config" args values $options |
| set ::env(CTS_VERILOG_INPUT) $values(-verilog) |
| set ::env(CTS_DEF_INPUT) $values(-def) |
| set ::env(CTS_ROOT_BUFFER) $values(-root_buffer) |
| # check |
| set ::env(CTS_PERCENTILE) 0.075 |
| set ::env(CTS_TARGET_SKEW) $values(-target_skew) |
| set ::env(CTS_TOLER) $values(-toler) |
| exec envsubst < ./scripts/cts/cts.config > $values(-output) |
| } |
| |
| proc gen_clock_tree {args} { |
| set options {{-config required}} |
| parse_key_args "gen_clock_tree" args values $options |
| set cts_config $values(-config) |
| |
| exec ./scripts/cts/runTritonCTS_mod.tcl \ |
| -configFilePath=$cts_config \ |
| -scriptsPath=$::env(OPENROAD)/TritonCTS/scripts \ |
| -techFilesPath=$::env(CTS_TECH_DIR) \ |
| -lefDefParserPath=$::env(OPENROAD)/TritonCTS/bin/lefdef2cts \ |
| -executablePath=$::env(OPENROAD)/TritonCTS/bin/genHtree \ |
| -legalizerPath=$::env(OPENROAD)/bin/opendp \ |
| -outputPath=$::env(RESULTS_DIR)/cts |& tee $::env(TERMINAL_OUTPUT) $::env(cts_log_file_tag).log |
| |
| exec mv $::env(RESULTS_DIR)/cts/final.v $::env(cts_result_file_tag).v |
| exec mv $::env(RESULTS_DIR)/cts/cts_final.def $::env(cts_result_file_tag).def |
| } |
| |