puts -> report_line
This commit is contained in:
parent
ee86a30338
commit
7d6c70c6f8
|
|
@ -82,10 +82,10 @@ proc report_edge_dcalc { edge corner min_max digits } {
|
|||
# Filter timing checks based on min_max.
|
||||
if {!(($min_max == "max" && $role == "hold") \
|
||||
|| ($min_max=="min" && $role=="setup"))} {
|
||||
puts "Library: [get_name $library]"
|
||||
puts "Cell: [get_name $cell]"
|
||||
puts "Arc sense: [$edge sense]"
|
||||
puts "Arc type: $role"
|
||||
report_line "Library: [get_name $library]"
|
||||
report_line "Cell: [get_name $cell]"
|
||||
report_line "Arc sense: [$edge sense]"
|
||||
report_line "Arc type: $role"
|
||||
|
||||
set arc_iter [$edge timing_arc_iterator]
|
||||
while {[$arc_iter has_next]} {
|
||||
|
|
@ -94,15 +94,14 @@ proc report_edge_dcalc { edge corner min_max digits } {
|
|||
set from_rf [$arc from_trans]
|
||||
set to [get_name [$to_pin port]]
|
||||
set to_rf [$arc to_trans]
|
||||
puts "$from $from_rf -> $to $to_rf"
|
||||
puts -nonewline [report_delay_calc_cmd $edge $arc $corner $min_max $digits]
|
||||
report_line "$from $from_rf -> $to $to_rf"
|
||||
report_line [report_delay_calc_cmd $edge $arc $corner $min_max $digits]
|
||||
if { [$edge delay_annotated $arc $corner $min_max] } {
|
||||
set delay [$edge arc_delay $arc $corner $min_max]
|
||||
puts "Annotated value = [format_time $delay $digits]"
|
||||
report_line "Annotated value = [format_time $delay $digits]"
|
||||
}
|
||||
puts ""
|
||||
puts "............................................."
|
||||
puts ""
|
||||
report_line "............................................."
|
||||
report_line ""
|
||||
}
|
||||
$arc_iter finish
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ public:
|
|||
Report();
|
||||
virtual ~Report();
|
||||
|
||||
// Primitives to print output.
|
||||
// Primitive to print output.
|
||||
// Return the number of characters written.
|
||||
virtual size_t printString(const char *buffer,
|
||||
size_t length);
|
||||
|
|
@ -47,6 +47,8 @@ public:
|
|||
va_list args);
|
||||
void print(const string *str);
|
||||
void print(const string &str);
|
||||
// Print line with return.
|
||||
virtual void printLine(const char *line);
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
|
|
|
|||
18
tcl/Cmds.tcl
18
tcl/Cmds.tcl
|
|
@ -27,21 +27,21 @@ proc report_clock1 { clk } {
|
|||
|
||||
if { [$clk waveform_valid] } {
|
||||
set digits $sta_report_default_digits
|
||||
puts -nonewline [format "%-20s" [get_name $clk]]
|
||||
puts -nonewline [format "%10s" [format_time [$clk period] $digits]]
|
||||
puts -nonewline " "
|
||||
set waveform [$clk waveform]
|
||||
if { $waveform == {} } {
|
||||
puts -nonewline " "
|
||||
set wave " "
|
||||
} else {
|
||||
set wave ""
|
||||
foreach edge $waveform {
|
||||
puts -nonewline [format "%10s" [format_time $edge $digits]]
|
||||
set wave "$wave[format "%10s" [format_time $edge $digits]]"
|
||||
}
|
||||
}
|
||||
if {[$clk is_generated]} {
|
||||
puts -nonewline " (generated)"
|
||||
set generated " (generated)"
|
||||
} else {
|
||||
set generated ""
|
||||
}
|
||||
puts ""
|
||||
report_line "[format %-20s [get_name $clk]][format %10s [format_time [$clk period] $digits]] $wave$generated"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -75,10 +75,10 @@ proc check_setup_cmd { cmd cmd_args } {
|
|||
$generated_clocks]
|
||||
foreach error $errors {
|
||||
# First line is the error msg.
|
||||
puts [lindex $error 0]
|
||||
report_line [lindex $error 0]
|
||||
if { $verbose } {
|
||||
foreach obj [lrange $error 1 end] {
|
||||
puts " $obj"
|
||||
report_line " $obj"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -95,27 +95,25 @@ proc report_edges_ { vertex iter_proc wire_from_name_proc wire_to_name_proc } {
|
|||
proc report_edge_ { edge vertex_from_name_proc vertex_to_name_proc } {
|
||||
global sta_report_default_digits
|
||||
|
||||
puts -nonewline "[$vertex_from_name_proc [$edge from]] -> [$vertex_to_name_proc [$edge to]] [$edge role]"
|
||||
set latch_enable [$edge latch_d_to_q_en]
|
||||
if { $latch_enable != "" } {
|
||||
puts " enable $latch_enable"
|
||||
} else {
|
||||
puts ""
|
||||
set latch_enable " enable $latch_enable"
|
||||
}
|
||||
report_line "[$vertex_from_name_proc [$edge from]] -> [$vertex_to_name_proc [$edge to]] [$edge role]$latch_enable"
|
||||
|
||||
set disables [edge_disable_reason $edge]
|
||||
if { $disables != "" } {
|
||||
puts " Disabled by $disables"
|
||||
report_line " Disabled by $disables"
|
||||
}
|
||||
|
||||
set cond [$edge cond]
|
||||
if { $cond != "" } {
|
||||
puts " Condition: $cond"
|
||||
report_line " Condition: $cond"
|
||||
}
|
||||
|
||||
set mode_name [$edge mode_name]
|
||||
if { $mode_name != "" } {
|
||||
puts " Mode: $mode_name [$edge mode_value]"
|
||||
report_line " Mode: $mode_name [$edge mode_value]"
|
||||
}
|
||||
|
||||
set iter [$edge timing_arc_iterator]
|
||||
|
|
@ -127,7 +125,7 @@ proc report_edge_ { edge vertex_from_name_proc vertex_to_name_proc } {
|
|||
if { [timing_arc_disabled $edge $arc] } {
|
||||
set disable_reason " disabled"
|
||||
}
|
||||
puts " [$arc from_trans] -> [$arc to_trans] $delays_fmt$disable_reason"
|
||||
report_line " [$arc from_trans] -> [$arc to_trans] $delays_fmt$disable_reason"
|
||||
}
|
||||
$iter finish
|
||||
}
|
||||
|
|
@ -217,16 +215,20 @@ proc report_constant { obj } {
|
|||
|
||||
proc report_pin_constant { pin } {
|
||||
set sim_value [pin_sim_logic_value $pin]
|
||||
puts -nonewline "[pin_property $pin lib_pin_name] $sim_value"
|
||||
|
||||
set case_value [pin_case_logic_value $pin]
|
||||
if { $case_value != "X" } {
|
||||
puts -nonewline " case=$case_value"
|
||||
set case " case=$case_value"
|
||||
} else {
|
||||
set case ""
|
||||
}
|
||||
set logic_value [pin_logic_value $pin]
|
||||
if { $logic_value != "X" } {
|
||||
puts -nonewline " logic=$logic_value"
|
||||
set logic " logic=$logic_value"
|
||||
} else {
|
||||
set logic ""
|
||||
}
|
||||
puts ""
|
||||
report_line "[pin_property $pin lib_pin_name] $sim_value$case$logic"
|
||||
}
|
||||
|
||||
################################################################
|
||||
|
|
@ -236,21 +238,21 @@ proc report_disabled_edges {} {
|
|||
if { [$edge role] == "wire" } {
|
||||
set from_pin_name [get_full_name [[$edge from] pin]]
|
||||
set to_pin_name [get_full_name [[$edge to] pin]]
|
||||
puts -nonewline "$from_pin_name $to_pin_name"
|
||||
report_line "$from_pin_name $to_pin_name [edge_disable_reason_verbose $edge]"
|
||||
} else {
|
||||
set from_pin [[$edge from] pin]
|
||||
set to_pin [[$edge to] pin]
|
||||
set inst_name [get_full_name [$from_pin instance]]
|
||||
set from_port_name [get_name [$from_pin port]]
|
||||
set to_port_name [get_name [$to_pin port]]
|
||||
puts -nonewline "$inst_name $from_port_name $to_port_name"
|
||||
set cond [$edge cond]
|
||||
if { $cond != "" } {
|
||||
puts -nonewline " when: $cond"
|
||||
set when " when: $cond"
|
||||
} else {
|
||||
set when ""
|
||||
}
|
||||
report_line "$inst_name $from_port_name $to_port_name$when [edge_disable_reason_verbose $edge]"
|
||||
}
|
||||
set reason [edge_disable_reason_verbose $edge]
|
||||
puts " $reason"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -297,7 +299,7 @@ proc report_slews { pin } {
|
|||
|
||||
set pin1 [get_port_pin_error "pin" $pin]
|
||||
foreach vertex [$pin1 vertices] {
|
||||
puts "[vertex_path_name $vertex] [rise_short_name] [format_times [$vertex slews rise] $sta_report_default_digits] [fall_short_name] [format_times [$vertex slews fall] $sta_report_default_digits]"
|
||||
report_line "[vertex_path_name $vertex] [rise_short_name] [format_times [$vertex slews rise] $sta_report_default_digits] [fall_short_name] [format_times [$vertex slews fall] $sta_report_default_digits]"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -330,7 +332,7 @@ proc vertex_name_ { vertex pin pin_name } {
|
|||
proc hier_pins_crossed_by_edge { edge } {
|
||||
set from_pins [hier_pins_above [[$edge from] pin]]
|
||||
set to_pins [hier_pins_above [[$edge to] pin]]
|
||||
foreach p $to_pins { puts [$p path_name] }
|
||||
foreach p $to_pins { report_line [$p path_name] }
|
||||
while { [llength $from_pins] > 0 \
|
||||
&& [llength $to_pins] > 0 \
|
||||
&& [lindex $from_pins 0] == [lindex $to_pins 0] } {
|
||||
|
|
@ -369,7 +371,7 @@ proc report_level { pin } {
|
|||
set pin1 [get_port_pin_error "pin" $pin]
|
||||
foreach vertex [$pin1 vertices] {
|
||||
if { $vertex != "NULL" } {
|
||||
puts "[vertex_path_name $vertex] level = [$vertex level]"
|
||||
report_line "[vertex_path_name $vertex] level = [$vertex level]"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -392,9 +394,9 @@ proc report_level_distribution {} {
|
|||
}
|
||||
$iter finish
|
||||
|
||||
puts "level pin count"
|
||||
report_line "level pin count"
|
||||
for { set level 0 } { $level < $max_level } { incr level } {
|
||||
puts " $level $count($level)"
|
||||
report_line " $level $count($level)"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
122
tcl/Network.tcl
122
tcl/Network.tcl
|
|
@ -62,11 +62,11 @@ proc report_instance1 { instance connections verbose } {
|
|||
} else {
|
||||
set inst_name [get_full_name $instance]
|
||||
}
|
||||
puts "Instance $inst_name"
|
||||
report_line "Instance $inst_name"
|
||||
set cell [instance_property $instance "cell"]
|
||||
puts " Cell: [get_name $cell]"
|
||||
puts " Library: [get_name [$cell library]]"
|
||||
puts " Path cells: [instance_cell_path $instance]"
|
||||
report_line " Cell: [get_name $cell]"
|
||||
report_line " Library: [get_name [$cell library]]"
|
||||
report_line " Path cells: [instance_cell_path $instance]"
|
||||
if { $connections } {
|
||||
report_instance_pins $instance $verbose
|
||||
}
|
||||
|
|
@ -87,7 +87,7 @@ proc report_instance_pins { instance verbose } {
|
|||
proc report_instance_pins1 {instance verbose header header_optional dirs} {
|
||||
set header_shown 0
|
||||
if { !$header_optional } {
|
||||
puts $header
|
||||
report_line $header
|
||||
set header_shown 1
|
||||
}
|
||||
set iter [$instance pin_iterator]
|
||||
|
|
@ -96,7 +96,7 @@ proc report_instance_pins1 {instance verbose header header_optional dirs} {
|
|||
set dir [pin_direction $pin]
|
||||
if { [lsearch $dirs $dir] != -1 } {
|
||||
if { !$header_shown } {
|
||||
puts $header
|
||||
report_line $header
|
||||
set header_shown 1
|
||||
}
|
||||
report_instance_pin $pin $verbose
|
||||
|
|
@ -106,22 +106,22 @@ proc report_instance_pins1 {instance verbose header header_optional dirs} {
|
|||
}
|
||||
|
||||
proc report_instance_pin { pin verbose } {
|
||||
puts -nonewline " [$pin port_name] [pin_direction $pin]"
|
||||
set net [$pin net]
|
||||
if { $net == "NULL" } {
|
||||
puts " (unconnected)"
|
||||
set net_name "(unconnected)"
|
||||
} else {
|
||||
puts " [get_full_name [$net highest_connected_net]]"
|
||||
if { $verbose } {
|
||||
set pins [net_connected_pins_sorted $net]
|
||||
foreach pin $pins {
|
||||
if [$pin is_load] {
|
||||
if [$pin is_top_level_port] {
|
||||
puts " [get_full_name $pin] [pin_direction $pin] port"
|
||||
} else {
|
||||
puts " [get_full_name $pin] [pin_direction $pin]"
|
||||
}
|
||||
}
|
||||
set net_name [get_full_name [$net highest_connected_net]]
|
||||
}
|
||||
report_line " [$pin port_name] [pin_direction $pin] $net_name"
|
||||
if { $verbose && $net != "NULL" } {
|
||||
set pins [net_connected_pins_sorted $net]
|
||||
foreach pin $pins {
|
||||
if [$pin is_load] {
|
||||
if [$pin is_top_level_port] {
|
||||
report_line " [get_full_name $pin] [pin_direction $pin] port"
|
||||
} else {
|
||||
report_line " [get_full_name $pin] [pin_direction $pin]"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -142,9 +142,9 @@ proc instance_cell_path { instance } {
|
|||
proc report_instance_children_ { instance } {
|
||||
set children [instance_sorted_children $instance]
|
||||
if { $children != {} } {
|
||||
puts " Children:"
|
||||
report_line " Children:"
|
||||
foreach child $children {
|
||||
puts " [get_name $child] ([instance_property $child ref_name])"
|
||||
report_line " [get_name $child] ([instance_property $child ref_name])"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -176,48 +176,48 @@ proc report_lib_cell_ { cell } {
|
|||
global sta_report_default_digits
|
||||
|
||||
set lib [$cell liberty_library]
|
||||
puts "Cell [get_name $cell]"
|
||||
puts "Library [get_name $lib]"
|
||||
report_line "Cell [get_name $cell]"
|
||||
report_line "Library [get_name $lib]"
|
||||
set filename [liberty_cell_property $cell "filename"]
|
||||
if { $filename != "" } {
|
||||
puts "File $filename"
|
||||
report_line "File $filename"
|
||||
}
|
||||
set iter [$cell liberty_port_iterator]
|
||||
while {[$iter has_next]} {
|
||||
set port [$iter next]
|
||||
if { [$port is_bus] } {
|
||||
puts -nonewline " [$port bus_name] [liberty_port_direction $port]"
|
||||
set port_name [$port bus_name]
|
||||
} else {
|
||||
puts -nonewline " [get_name $port] [liberty_port_direction $port]"
|
||||
set port_name [get_name $port]
|
||||
}
|
||||
set enable [$port tristate_enable]
|
||||
if { $enable != "" } {
|
||||
puts -nonewline " enable=$enable"
|
||||
set enable " enable=$enable"
|
||||
}
|
||||
set func [$port function]
|
||||
if { $func != "" } {
|
||||
puts -nonewline " function=$func"
|
||||
set func " function=$func"
|
||||
}
|
||||
puts [port_capacitance_str $port $sta_report_default_digits]
|
||||
report_line " $port_name [liberty_port_direction $port]$enable$func[port_capacitance_str $port $sta_report_default_digits]"
|
||||
}
|
||||
$iter finish
|
||||
}
|
||||
|
||||
proc report_cell_ { cell } {
|
||||
set lib [$cell library]
|
||||
puts "Cell [get_name $cell]"
|
||||
puts "Library [get_name $lib]"
|
||||
report_line "Cell [get_name $cell]"
|
||||
report_line "Library [get_name $lib]"
|
||||
set filename [liberty_cell_property $cell "filename"]
|
||||
if { $filename != "" } {
|
||||
puts "File $filename"
|
||||
report_line "File $filename"
|
||||
}
|
||||
set iter [$cell port_iterator]
|
||||
while {[$iter has_next]} {
|
||||
set port [$iter next]
|
||||
if { [$port is_bus] } {
|
||||
puts " [$port bus_name] [port_direction $port]"
|
||||
report_line " [$port bus_name] [port_direction $port]"
|
||||
} else {
|
||||
puts " [get_name $port] [port_direction $port]"
|
||||
report_line " [get_name $port] [port_direction $port]"
|
||||
}
|
||||
}
|
||||
$iter finish
|
||||
|
|
@ -285,20 +285,20 @@ proc report_net_ { net } {
|
|||
}
|
||||
|
||||
proc report_net1 { net connections verbose hier_pins corner digits } {
|
||||
puts "Net [get_full_name $net]"
|
||||
report_line "Net [get_full_name $net]"
|
||||
if {$connections} {
|
||||
set pins [net_connected_pins_sorted $net]
|
||||
if {$verbose} {
|
||||
report_net_caps $net $pins $corner $digits
|
||||
}
|
||||
puts "Driver pins"
|
||||
report_line "Driver pins"
|
||||
report_net_pins $pins "is_driver" $verbose $corner $digits
|
||||
puts ""
|
||||
puts "Load pins"
|
||||
report_line ""
|
||||
report_line "Load pins"
|
||||
report_net_pins $pins "is_load" $verbose $corner $digits
|
||||
if {$hier_pins} {
|
||||
puts ""
|
||||
puts "Hierarchical pins"
|
||||
report_line ""
|
||||
report_line "Hierarchical pins"
|
||||
report_net_pins $pins "is_hierarchical" $verbose $corner $digits
|
||||
}
|
||||
report_net_other_pins $pins $verbose $corner $digits
|
||||
|
|
@ -336,10 +336,10 @@ proc report_net_caps { net pins corner digits } {
|
|||
incr load_count
|
||||
}
|
||||
}
|
||||
puts " Number of drivers: $driver_count"
|
||||
puts " Number of loads: $load_count"
|
||||
puts " Number of pins: $pin_count"
|
||||
puts ""
|
||||
report_line " Number of drivers: $driver_count"
|
||||
report_line " Number of loads: $load_count"
|
||||
report_line " Number of pins: $pin_count"
|
||||
report_line ""
|
||||
}
|
||||
|
||||
proc report_net_cap { net caption cap_msg corner digits } {
|
||||
|
|
@ -347,7 +347,7 @@ proc report_net_cap { net caption cap_msg corner digits } {
|
|||
set cap_r_max [$net $cap_msg "rise" $corner "max"]
|
||||
set cap_f_min [$net $cap_msg "fall" $corner "min"]
|
||||
set cap_f_max [$net $cap_msg "fall" $corner "max"]
|
||||
puts " $caption capacitance: [capacitances_str $cap_r_min $cap_r_max $cap_f_min $cap_f_max $digits]"
|
||||
report_line " $caption capacitance: [capacitances_str $cap_r_min $cap_r_max $cap_f_min $cap_f_max $digits]"
|
||||
}
|
||||
|
||||
proc report_net_pins { pins pin_pred verbose corner digits } {
|
||||
|
|
@ -363,8 +363,8 @@ proc report_net_other_pins { pins verbose corner digits } {
|
|||
foreach pin $pins {
|
||||
if { !([$pin is_driver] || [$pin is_load] || [$pin is_hierarchical]) } {
|
||||
if { !$header } {
|
||||
puts ""
|
||||
puts "Other pins"
|
||||
report_line ""
|
||||
report_line "Other pins"
|
||||
set header 1
|
||||
}
|
||||
report_net_pin $pin $verbose $corner $digits
|
||||
|
|
@ -375,16 +375,17 @@ proc report_net_other_pins { pins verbose corner digits } {
|
|||
proc report_net_pin { pin verbose corner digits } {
|
||||
if [$pin is_leaf] {
|
||||
set cell_name [get_name [[$pin instance] cell]]
|
||||
puts -nonewline " [get_full_name $pin] [pin_direction $pin] ($cell_name)"
|
||||
set cap ""
|
||||
if { $verbose } {
|
||||
set liberty_port [$pin liberty_port]
|
||||
if { $liberty_port != "NULL" } {
|
||||
puts -nonewline [port_capacitance_str $liberty_port $digits]
|
||||
set cap [port_capacitance_str $liberty_port $digits]
|
||||
}
|
||||
}
|
||||
puts "[pin_location_str $pin]"
|
||||
report_line " [get_full_name $pin] [pin_direction $pin] ($cell_name)$cap[pin_location_str $pin]"
|
||||
} elseif [$pin is_top_level_port] {
|
||||
puts -nonewline " [get_full_name $pin] [pin_direction $pin] port"
|
||||
set wire_cap ""
|
||||
set pin_cap ""
|
||||
if { $verbose } {
|
||||
set port [$pin port]
|
||||
set cap_r_min [port_ext_wire_cap $port "rise" "min"]
|
||||
|
|
@ -392,7 +393,7 @@ proc report_net_pin { pin verbose corner digits } {
|
|||
set cap_f_min [port_ext_wire_cap $port "fall" "min"]
|
||||
set cap_f_max [port_ext_wire_cap $port "fall" "max"]
|
||||
if { $cap_r_min > 0 || $cap_r_max > 0 || $cap_f_min > 0 || $cap_r_max > 0 } {
|
||||
puts -nonewline " wire [capacitances_str $cap_r_min $cap_r_max $cap_f_min $cap_f_max $digits]"
|
||||
set wire_cap " wire [capacitances_str $cap_r_min $cap_r_max $cap_f_min $cap_f_max $digits]"
|
||||
}
|
||||
|
||||
set port [$pin port]
|
||||
|
|
@ -401,12 +402,12 @@ proc report_net_pin { pin verbose corner digits } {
|
|||
set cap_f_min [port_ext_pin_cap $port "fall" "min"]
|
||||
set cap_f_max [port_ext_pin_cap $port "fall" "max"]
|
||||
if { $cap_r_min > 0 || $cap_r_max > 0 || $cap_f_min > 0 || $cap_r_max > 0} {
|
||||
puts -nonewline " pin [capacitances_str $cap_r_min $cap_r_max $cap_f_min $cap_f_max $digits]"
|
||||
set pin_cap " pin [capacitances_str $cap_r_min $cap_r_max $cap_f_min $cap_f_max $digits]"
|
||||
}
|
||||
}
|
||||
puts "[pin_location_str $pin]"
|
||||
report_line " [get_full_name $pin] [pin_direction $pin] port$wire_cap$pin_cap[pin_location_str $pin]"
|
||||
} elseif [$pin is_hierarchical] {
|
||||
puts " [get_full_name $pin] [pin_direction $pin]"
|
||||
report_line " [get_full_name $pin] [pin_direction $pin]"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -426,11 +427,11 @@ proc pin_location_str { pin } {
|
|||
proc report_pin_ { pin } {
|
||||
global sta_report_default_digits
|
||||
|
||||
puts -nonewline "Pin [get_full_name $pin] [pin_direction_desc $pin]"
|
||||
|
||||
set liberty_port [$pin liberty_port]
|
||||
if { $liberty_port != "NULL" } {
|
||||
puts -nonewline [port_capacitance_str $liberty_port $sta_report_default_digits]
|
||||
set cap [port_capacitance_str $liberty_port $sta_report_default_digits]
|
||||
} else {
|
||||
set cap ""
|
||||
}
|
||||
|
||||
if { [$pin is_top_level_port] } {
|
||||
|
|
@ -444,10 +445,11 @@ proc report_pin_ { pin } {
|
|||
set net [$pin net]
|
||||
}
|
||||
if { $net == "NULL" } {
|
||||
puts " (unconnected)"
|
||||
set net_name "(unconnected)"
|
||||
} else {
|
||||
puts " [get_full_name [$net highest_connected_net]]"
|
||||
set net_name [get_full_name [$net highest_connected_net]]
|
||||
}
|
||||
report_line "Pin [get_full_name $pin] [pin_direction_desc $pin]$cap $net_name"
|
||||
}
|
||||
|
||||
proc pin_direction_desc { pin } {
|
||||
|
|
|
|||
|
|
@ -69,11 +69,7 @@ proc report_power_design { corner digits } {
|
|||
report_title_dashes5 $field_width
|
||||
report_power_row "Total" $power_result $design_total $field_width $digits
|
||||
|
||||
puts -nonewline [format "%-20s" ""]
|
||||
report_power_col_percent $design_internal $design_total $field_width
|
||||
report_power_col_percent $design_switching $design_total $field_width
|
||||
report_power_col_percent $design_leakage $design_total $field_width
|
||||
puts ""
|
||||
report_line "[format %-20s {}][power_col_percent $design_internal $design_total $field_width][power_col_percent $design_switching $design_total $field_width][power_col_percent $design_leakage $design_total $field_width]"
|
||||
}
|
||||
|
||||
proc max { x y } {
|
||||
|
|
@ -85,15 +81,11 @@ proc max { x y } {
|
|||
}
|
||||
|
||||
proc report_power_title5 { title1 title2 title3 title4 title5 field_width } {
|
||||
puts -nonewline [format "%-20s" $title1]
|
||||
report_power_title4 $title2 $title3 $title4 $title5 $field_width
|
||||
report_line "[format %-20s $title1] [format %${field_width}s $title2] [format %${field_width}s $title3] [format %${field_width}s $title4] [format %${field_width}s $title5]"
|
||||
}
|
||||
|
||||
proc report_power_title4 { title1 title2 title3 title4 field_width } {
|
||||
puts -nonewline [format " %${field_width}s" $title1]
|
||||
puts -nonewline [format " %${field_width}s" $title2]
|
||||
puts -nonewline [format " %${field_width}s" $title3]
|
||||
puts [format " %${field_width}s" $title4]
|
||||
report_line " [format %${field_width}s $title1] [format %${field_width}s $title2] [format %${field_width}s $title3] [format %${field_width}s $title4]"
|
||||
}
|
||||
|
||||
proc report_title_dashes5 { field_width } {
|
||||
|
|
@ -107,10 +99,11 @@ proc report_title_dashes4 { field_width } {
|
|||
}
|
||||
|
||||
proc report_title_dashes { count } {
|
||||
set line ""
|
||||
for {set i 0} {$i < $count} {incr i} {
|
||||
puts -nonewline "-"
|
||||
set line "-$line"
|
||||
}
|
||||
puts ""
|
||||
report_line $line
|
||||
}
|
||||
|
||||
proc report_power_row { type row_result design_total field_width digits } {
|
||||
|
|
@ -120,40 +113,35 @@ proc report_power_row { type row_result design_total field_width digits } {
|
|||
} else {
|
||||
set percent [expr $total / $design_total * 100]
|
||||
}
|
||||
puts -nonewline [format "%-20s" $type]
|
||||
report_power_col $internal $field_width $digits
|
||||
report_power_col $switching $field_width $digits
|
||||
report_power_col $leakage $field_width $digits
|
||||
report_power_col $total $field_width $digits
|
||||
puts [format " %5.1f%%" $percent]
|
||||
report_line "[format %-20s $type][power_col $internal $field_width $digits][power_col $switching $field_width $digits][power_col $leakage $field_width $digits][power_col $total $field_width $digits] [format %5.1f%% $percent]"
|
||||
}
|
||||
|
||||
proc is_nan { str } {
|
||||
return [string match "*NaN" $str]
|
||||
}
|
||||
|
||||
proc report_power_col { pwr field_width digits } {
|
||||
proc power_col { pwr field_width digits } {
|
||||
if { [is_nan $pwr] } {
|
||||
puts -nonewline [format " %${field_width}s" $pwr]
|
||||
format " %${field_width}s" $pwr
|
||||
} else {
|
||||
puts -nonewline [format " %$field_width.${digits}e" $pwr]
|
||||
format " %$field_width.${digits}e" $pwr
|
||||
}
|
||||
}
|
||||
|
||||
proc report_power_col_percent { col_total total field_width } {
|
||||
proc power_col_percent { col_total total field_width } {
|
||||
if { $total == 0.0 || [is_nan $total]} {
|
||||
set percent 0.0
|
||||
} else {
|
||||
set percent [expr $col_total / $total * 100]
|
||||
}
|
||||
puts -nonewline [format "%$field_width.1f%%" $percent]
|
||||
format "%$field_width.1f%%" $percent
|
||||
}
|
||||
|
||||
proc report_power_line { type pwr digits } {
|
||||
if { [is_nan $pwr] } {
|
||||
puts [format "%-16s %s" $type $pwr]
|
||||
report_line [format "%-16s %s" $type $pwr]
|
||||
} else {
|
||||
puts [format "%-16s %.${digits}e" $type $pwr]
|
||||
report_line [format "%-16s %.${digits}e" $type $pwr]
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -194,11 +182,7 @@ proc inst_pwr_cmp { inst_pwr1 inst_pwr2 } {
|
|||
|
||||
proc report_power_inst { inst power_result field_width digits } {
|
||||
lassign $power_result internal switching leakage total
|
||||
report_power_col $internal $field_width $digits
|
||||
report_power_col $switching $field_width $digits
|
||||
report_power_col $leakage $field_width $digits
|
||||
report_power_col $total $field_width $digits
|
||||
puts " [get_full_name $inst]"
|
||||
report_line "[power_col $internal $field_width $digits][power_col $switching $field_width $digits][power_col $leakage $field_width $digits][power_col $total $field_width $digits] [get_full_name $inst]"
|
||||
}
|
||||
|
||||
################################################################
|
||||
|
|
@ -262,7 +246,7 @@ proc power_find_nan { } {
|
|||
set power_result [instance_power $inst $corner]
|
||||
lassign $power_result internal switching leakage total
|
||||
if { [is_nan $internal] || [is_nan $switching] || [is_nan $leakage] } {
|
||||
puts "[get_full_name $inst] $internal $switching $leakage"
|
||||
report_line "[get_full_name $inst] $internal $switching $leakage"
|
||||
break
|
||||
}
|
||||
}
|
||||
|
|
|
|||
10
tcl/Sdc.tcl
10
tcl/Sdc.tcl
|
|
@ -76,7 +76,7 @@ proc source_ { filename echo verbose } {
|
|||
gets $stream line
|
||||
if { $line != "" } {
|
||||
if {$echo} {
|
||||
puts $line
|
||||
report_line $line
|
||||
}
|
||||
}
|
||||
append cmd $line "\n"
|
||||
|
|
@ -89,7 +89,7 @@ proc source_ { filename echo verbose } {
|
|||
# Flush results printed outside tcl to stdout/stderr.
|
||||
fflush
|
||||
switch $error_code {
|
||||
0 { if { $verbose && $result != "" } { puts $result } }
|
||||
0 { if { $verbose && $result != "" } { report_line $result } }
|
||||
1 { set error $result }
|
||||
2 { set error {invoked "return" outside of a proc.} }
|
||||
3 { set error {invoked "break" outside of a loop.} }
|
||||
|
|
@ -99,9 +99,9 @@ proc source_ { filename echo verbose } {
|
|||
if { $sta_continue_on_error } {
|
||||
# Only prepend error message with file/line once.
|
||||
if { [string first "Error" $error] == 0 } {
|
||||
puts $error
|
||||
report_line $error
|
||||
} else {
|
||||
puts "Error: [file tail $sdc_file], $sdc_line $error"
|
||||
report_line "Error: [file tail $sdc_file], $sdc_line $error"
|
||||
}
|
||||
set error {}
|
||||
} else {
|
||||
|
|
@ -176,7 +176,7 @@ proc current_instance { {inst ""} } {
|
|||
set current_instance [get_instance_error "instance" $inst]
|
||||
}
|
||||
set cell [get_name [$current_instance cell]]
|
||||
puts "Current instance is $cell."
|
||||
report_line "Current instance is $cell."
|
||||
# Current instance state variable must be part of the sta state so
|
||||
# the tcl interpreter can be shared by multiple sdc files.
|
||||
set_current_instance $current_instance
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ proc report_delays_wrt_clk { vertex what clk clk_rf } {
|
|||
} else {
|
||||
set clk_str ""
|
||||
}
|
||||
puts "$clk_str r $rise_fmt f $fall_fmt"
|
||||
report_line "$clk_str r $rise_fmt f $fall_fmt"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -94,7 +94,7 @@ proc report_wrt_clk { vertex what clk clk_rf } {
|
|||
} else {
|
||||
set clk_str ""
|
||||
}
|
||||
puts "$clk_str r $rise_fmt f $fall_fmt"
|
||||
report_line "$clk_str r $rise_fmt f $fall_fmt"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -173,12 +173,12 @@ proc_redirect report_path {
|
|||
while {[$path_iter has_next]} {
|
||||
set path [$path_iter next]
|
||||
if { $first } {
|
||||
puts "Tag group: [$vertex tag_group_index]"
|
||||
report_line "Tag group: [$vertex tag_group_index]"
|
||||
} else {
|
||||
puts ""
|
||||
report_line ""
|
||||
}
|
||||
if { $report_tags } {
|
||||
puts "Tag: [$path tag]"
|
||||
report_line "Tag: [$path tag]"
|
||||
}
|
||||
report_path_cmd $path
|
||||
delete_path_ref $path
|
||||
|
|
@ -189,7 +189,7 @@ proc_redirect report_path {
|
|||
set worst_path [vertex_worst_arrival_path_rf $vertex $tr $min_max]
|
||||
if { $worst_path != "NULL" } {
|
||||
if { $report_tags } {
|
||||
puts "Tag: [$worst_path tag]"
|
||||
report_line "Tag: [$worst_path tag]"
|
||||
}
|
||||
report_path_cmd $worst_path
|
||||
delete_path_ref $worst_path
|
||||
|
|
@ -386,33 +386,33 @@ proc report_slew_limits { corner min_max all_violators verbose nosplit } {
|
|||
if { $all_violators } {
|
||||
set violators [pin_slew_limit_violations $corner $min_max]
|
||||
if { $violators != {} } {
|
||||
puts "${min_max} slew"
|
||||
puts ""
|
||||
report_line "${min_max} slew"
|
||||
report_line ""
|
||||
if { $verbose } {
|
||||
foreach pin $violators {
|
||||
report_slew_limit_verbose $pin $corner $min_max
|
||||
puts ""
|
||||
report_line ""
|
||||
}
|
||||
} else {
|
||||
report_slew_limit_short_header
|
||||
foreach pin $violators {
|
||||
report_slew_limit_short $pin $corner $min_max
|
||||
}
|
||||
puts ""
|
||||
report_line ""
|
||||
}
|
||||
}
|
||||
} else {
|
||||
set pin [pin_min_slew_limit_slack $corner $min_max]
|
||||
if { $pin != "NULL" } {
|
||||
puts "${min_max} slew"
|
||||
puts ""
|
||||
report_line "${min_max} slew"
|
||||
report_line ""
|
||||
if { $verbose } {
|
||||
report_slew_limit_verbose $pin $corner $min_max
|
||||
puts ""
|
||||
report_line ""
|
||||
} else {
|
||||
report_slew_limit_short_header
|
||||
report_slew_limit_short $pin $corner $min_max
|
||||
puts ""
|
||||
report_line ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -422,33 +422,33 @@ proc report_fanout_limits { min_max all_violators verbose nosplit } {
|
|||
if { $all_violators } {
|
||||
set violators [pin_fanout_limit_violations $min_max]
|
||||
if { $violators != {} } {
|
||||
puts "${min_max} fanout"
|
||||
puts ""
|
||||
report_line "${min_max} fanout"
|
||||
report_line ""
|
||||
if { $verbose } {
|
||||
foreach pin $violators {
|
||||
report_fanout_limit_verbose $pin $min_max
|
||||
puts ""
|
||||
report_line ""
|
||||
}
|
||||
} else {
|
||||
report_fanout_limit_short_header
|
||||
foreach pin $violators {
|
||||
report_fanout_limit_short $pin $min_max
|
||||
}
|
||||
puts ""
|
||||
report_line ""
|
||||
}
|
||||
}
|
||||
} else {
|
||||
set pin [pin_min_fanout_limit_slack $min_max]
|
||||
if { $pin != "NULL" } {
|
||||
puts "${min_max} fanout"
|
||||
puts ""
|
||||
report_line "${min_max} fanout"
|
||||
report_line ""
|
||||
if { $verbose } {
|
||||
report_fanout_limit_verbose $pin $min_max
|
||||
puts ""
|
||||
report_line ""
|
||||
} else {
|
||||
report_fanout_limit_short_header
|
||||
report_fanout_limit_short $pin $min_max
|
||||
puts ""
|
||||
report_line ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -458,33 +458,33 @@ proc report_capacitance_limits { corner min_max all_violators verbose nosplit }
|
|||
if { $all_violators } {
|
||||
set violators [pin_capacitance_limit_violations $corner $min_max]
|
||||
if { $violators != {} } {
|
||||
puts "${min_max} capacitance"
|
||||
puts ""
|
||||
report_line "${min_max} capacitance"
|
||||
report_line ""
|
||||
if { $verbose } {
|
||||
foreach pin $violators {
|
||||
report_capacitance_limit_verbose $pin $corner $min_max
|
||||
puts ""
|
||||
report_line ""
|
||||
}
|
||||
} else {
|
||||
report_capacitance_limit_short_header
|
||||
foreach pin $violators {
|
||||
report_capacitance_limit_short $pin $corner $min_max
|
||||
}
|
||||
puts ""
|
||||
report_line ""
|
||||
}
|
||||
}
|
||||
} else {
|
||||
set pin [pin_min_capacitance_limit_slack $corner $min_max]
|
||||
if { $pin != "NULL" } {
|
||||
puts "${min_max} capacitance"
|
||||
puts ""
|
||||
report_line "${min_max} capacitance"
|
||||
report_line ""
|
||||
if { $verbose } {
|
||||
report_capacitance_limit_verbose $pin $corner $min_max
|
||||
puts ""
|
||||
report_line ""
|
||||
} else {
|
||||
report_capacitance_limit_short_header
|
||||
report_capacitance_limit_short $pin $corner $min_max
|
||||
puts ""
|
||||
report_line ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ namespace eval sta {
|
|||
define_cmd_args show_splash {}
|
||||
|
||||
proc show_splash {} {
|
||||
puts "OpenSTA [sta::version] [string range [sta::git_sha1] 0 9] Copyright (c) 2019, Parallax Software, Inc.
|
||||
report_line "OpenSTA [sta::version] [string range [sta::git_sha1] 0 9] Copyright (c) 2019, Parallax Software, Inc.
|
||||
License GPLv3: GNU GPL version 3 <http://gnu.org/licenses/gpl.html>
|
||||
|
||||
This is free software, and you are free to change and redistribute it
|
||||
|
|
@ -36,7 +36,7 @@ This program comes with ABSOLUTELY NO WARRANTY; for details type `show_warranty'
|
|||
define_cmd_args show_warranty {}
|
||||
|
||||
proc show_warranty {} {
|
||||
puts {15. Disclaimer of Warranty.
|
||||
report_line {15. Disclaimer of Warranty.
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
|
@ -49,7 +49,7 @@ If the disclaimer of warranty and limitation of liability provided above cannot
|
|||
define_cmd_args show_copying {}
|
||||
|
||||
proc show_copying {} {
|
||||
puts { GNU GENERAL PUBLIC LICENSE
|
||||
report_line { GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
|
|
|
|||
62
tcl/Sta.tcl
62
tcl/Sta.tcl
|
|
@ -303,7 +303,7 @@ proc_redirect report_checks {
|
|||
parse_report_path_options "report_checks" args "full" 0
|
||||
set path_ends [find_timing_paths_cmd "report_checks" args]
|
||||
if { $path_ends == {} } {
|
||||
puts "No paths found."
|
||||
report_line "No paths found."
|
||||
} else {
|
||||
report_path_ends $path_ends
|
||||
}
|
||||
|
|
@ -535,7 +535,7 @@ proc_redirect report_tns {
|
|||
set digits $sta_report_default_digits
|
||||
}
|
||||
|
||||
puts "tns [format_time [total_negative_slack_cmd "max"] $digits]"
|
||||
report_line "tns [format_time [total_negative_slack_cmd "max"] $digits]"
|
||||
}
|
||||
|
||||
################################################################
|
||||
|
|
@ -557,7 +557,7 @@ proc_redirect report_wns {
|
|||
if { $slack > 0.0 } {
|
||||
set slack 0.0
|
||||
}
|
||||
puts "wns [format_time $slack $digits]"
|
||||
report_line "wns [format_time $slack $digits]"
|
||||
}
|
||||
|
||||
################################################################
|
||||
|
|
@ -575,7 +575,7 @@ proc_redirect report_worst_slack {
|
|||
set digits $sta_report_default_digits
|
||||
}
|
||||
|
||||
puts "worst slack [format_time [worst_slack_cmd "max"] $digits]"
|
||||
report_line "worst slack [format_time [worst_slack_cmd "max"] $digits]"
|
||||
}
|
||||
|
||||
################################################################
|
||||
|
|
@ -1036,8 +1036,8 @@ define_sta_cmd_args "report_clock_properties" {[clocks]}
|
|||
proc_redirect report_clock_properties {
|
||||
check_argc_eq0or1 "report_clock_properties" $args
|
||||
update_generated_clks
|
||||
puts "Clock Period Waveform"
|
||||
puts "----------------------------------------------------"
|
||||
report_line "Clock Period Waveform"
|
||||
report_line "----------------------------------------------------"
|
||||
if { [llength $args] == 0 } {
|
||||
set clk_iter [clock_iterator]
|
||||
while {[$clk_iter has_next]} {
|
||||
|
|
@ -1054,51 +1054,19 @@ proc_redirect report_clock_properties {
|
|||
|
||||
################################################################
|
||||
|
||||
define_sta_cmd_args "report_object_full_names" {[-verbose] objects}
|
||||
define_sta_cmd_args "report_object_full_names" {objects}
|
||||
|
||||
proc report_object_full_names { args } {
|
||||
parse_key_args "report_object_full_names" args keys {} flags {-verbose}
|
||||
|
||||
set objects [lindex $args 0]
|
||||
if { [info exists flags(-verbose)] } {
|
||||
puts -nonewline "{"
|
||||
set first 1
|
||||
foreach obj [sort_by_full_name $objects] {
|
||||
if { !$first } {
|
||||
puts -nonewline ", "
|
||||
}
|
||||
puts -nonewline \"[get_object_type $obj]:[get_full_name $obj]\"
|
||||
set first 0
|
||||
}
|
||||
puts "}"
|
||||
} else {
|
||||
foreach obj [sort_by_full_name $objects] {
|
||||
puts [get_full_name $obj]
|
||||
}
|
||||
proc report_object_full_names { objects } {
|
||||
foreach obj [sort_by_full_name $objects] {
|
||||
report_line [get_full_name $obj]
|
||||
}
|
||||
}
|
||||
|
||||
define_sta_cmd_args "report_object_names" {[-verbose] objects}
|
||||
define_sta_cmd_args "report_object_names" {objects}
|
||||
|
||||
proc report_object_names { args } {
|
||||
parse_key_args "report_object_names" args keys {} flags {-verbose}
|
||||
|
||||
set objects [lindex $args 0]
|
||||
if { [info exists flags(-verbose)] } {
|
||||
puts -nonewline "{"
|
||||
set first 1
|
||||
foreach obj [sort_by_name $objects] {
|
||||
if { !$first } {
|
||||
puts -nonewline ", "
|
||||
}
|
||||
puts -nonewline \"[get_object_type $obj]:[get_name $obj]\"
|
||||
set first 0
|
||||
}
|
||||
puts "}"
|
||||
} else {
|
||||
foreach obj [sort_by_name $objects] {
|
||||
puts [get_name $obj]
|
||||
}
|
||||
proc report_object_names { objects } {
|
||||
foreach obj [sort_by_name $objects] {
|
||||
report_line [get_name $obj]
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1109,7 +1077,7 @@ define_sta_cmd_args "report_units" {}
|
|||
proc report_units { args } {
|
||||
check_argc_eq0 "report_units" $args
|
||||
foreach unit {"time" "capacitance" "resistance" "voltage" "current" "power" "distance"} {
|
||||
puts " $unit 1[unit_scale_abreviation $unit][unit_suffix $unit]"
|
||||
report_line " $unit 1[unit_scale_abreviation $unit][unit_suffix $unit]"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
17
tcl/StaTcl.i
17
tcl/StaTcl.i
|
|
@ -1947,7 +1947,8 @@ void
|
|||
report_error(int id,
|
||||
const char *msg)
|
||||
{
|
||||
Sta::sta()->report()->error(id, "%s", msg);
|
||||
Report *report = Sta::sta()->report();
|
||||
report->error(id, "%s", msg);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -1956,14 +1957,16 @@ report_file_error(int id,
|
|||
int line,
|
||||
const char *msg)
|
||||
{
|
||||
Sta::sta()->report()->error(id, filename, line, "%s", msg);
|
||||
Report *report = Sta::sta()->report();
|
||||
report->error(id, filename, line, "%s", msg);
|
||||
}
|
||||
|
||||
void
|
||||
report_warn(int id,
|
||||
const char *msg)
|
||||
{
|
||||
Sta::sta()->report()->warn(id, "%s", msg);
|
||||
Report *report = Sta::sta()->report();
|
||||
report->warn(id, "%s", msg);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -1972,13 +1975,15 @@ report_file_warn(int id,
|
|||
int line,
|
||||
const char *msg)
|
||||
{
|
||||
Sta::sta()->report()->fileWarn(id, filename, line, "%s", msg);
|
||||
Report *report = Sta::sta()->report();
|
||||
report->fileWarn(id, filename, line, "%s", msg);
|
||||
}
|
||||
|
||||
void
|
||||
report(const char *msg)
|
||||
report_line(const char *msg)
|
||||
{
|
||||
Sta::sta()->report()->print(msg);
|
||||
Report *report = Sta::sta()->report();
|
||||
report->printLine(msg);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
12
tcl/Util.tcl
12
tcl/Util.tcl
|
|
@ -225,25 +225,25 @@ proc show_cmd_args { cmd } {
|
|||
set max_col 80
|
||||
set indent 2
|
||||
set indent_str " "
|
||||
puts -nonewline $cmd
|
||||
set line $cmd
|
||||
set col [string length $cmd]
|
||||
set arglist $cmd_args($cmd)
|
||||
# Break the arglist up into max_col length lines.
|
||||
while {1} {
|
||||
if {[regexp {(^ *)([a-zA-Z0-9>_\|\-]+|\[.*\])(.*)} \
|
||||
if {[regexp {(^ *)([a-zA-Z0-9_\\\|\-]+|\[.*\])(.*)} \
|
||||
$arglist ignore space arg rest]} {
|
||||
set arg_length [string length $arg]
|
||||
if { $col + $arg_length < $max_col } {
|
||||
puts -nonewline " $arg"
|
||||
set line "$line $arg"
|
||||
set col [expr $col + $arg_length + 1]
|
||||
} else {
|
||||
puts ""
|
||||
puts -nonewline "$indent_str $arg"
|
||||
report_line $line
|
||||
set line "$line$indent_str $arg"
|
||||
set col [expr $indent + $arg_length + 1]
|
||||
}
|
||||
set arglist $rest
|
||||
} else {
|
||||
puts ""
|
||||
report_line $line
|
||||
break
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -142,6 +142,13 @@ Report::print(const char *fmt, ...)
|
|||
va_end(args);
|
||||
}
|
||||
|
||||
void
|
||||
Report::printLine(const char *line)
|
||||
{
|
||||
printString(line, strlen(line));
|
||||
printString("\n", 1);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Reference in New Issue