Search code examples
http-redirecttcl

redirect command output to a file


   set fp_results [open "connectivity.txt" a+]
   set my_nets [get_nets *user given nets*]
   foreach_in_collection net $my_nets {
   set my_net [get_object_name $net]
   set cmd "check_lvs -nets $my_net -checks open -open_reporting bounding_box -max_errors 0"
   puts $fp_results "checking for: $my_net"
   puts $fp_results "eval $cmd"
}
close $fp_results

Here, a block of tcl code is given which checks whether the given nets are open or not in ICcompiler2(ICC2) shell. the eval command returns either 1/0 depending on open status of net. so the value of 0/1 is redirected to file. evaluating "eval $cmd" alone in icc2 shell reports all the details(co-ordinates etc). how to redirect the complete details of "eval $cmd" to file? the above line (puts $fp_results "eval $cmd") just redirects 1/0 to file.


Solution

  • This is ICC2, which means you can use the redirect command that Synopsys includes with their tools.

    fc_shell> man redirect
    2.  Synopsys Commands                                        Command Reference
                                       redirect
    
    NAME
           redirect
                  Redirects the output of a command to a file.
    
    SYNTAX
           string redirect
           [-append] [-tee] [-file | -variable | -channel] [-compress]
           [-bg]
           [-max_cores number_of_cores]
           target
           {command_string}
    
       Data Types
           number_of_cores  integer
           target           string
           command_string   string
    

    Instead of using puts $fp, you can redirect the stdout to a filename.

    set my_nets [get_nets *user given nets*]
    
    redirect -file "connectivity.txt" {
      foreach_in_collection net $my_nets {
       set my_net [get_object_name $net]
       set cmd "check_lvs -nets $my_net -checks open -open_reporting bounding_box -max_errors 0"
       puts "checking for: $my_net"
       eval $cmd
      }
    }