home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / sys / mentor / 285 < prev    next >
Encoding:
Text File  |  1992-11-08  |  19.0 KB  |  576 lines

  1. Newsgroups: comp.sys.mentor
  2. Path: sparky!uunet!europa.asd.contel.com!darwin.sura.net!zaphod.mps.ohio-state.edu!rpi!psinntp!psinntp!news.mentorg.com!gumby!mike
  3. From: mike@rtp-nc.mentorg.com (Mike Walsh)
  4. Subject: da_batch
  5. Sender: news@news.mentorg.com (News User)
  6. Message-ID: <1992Nov08.160329.4245@news.mentorg.com>
  7. Date: Sun, 08 Nov 1992 16:03:29 GMT
  8. Reply-To: mike@rtp-nc.mentorg.com
  9. Nntp-Posting-Host: rtp-nc.mentorg.com
  10. Organization: Mentor Graphics Corporation
  11. Keywords: 
  12. Followup-To: 
  13. Lines: 561
  14.  
  15. There was a problem with "da_batch" running on the HP/Apollo.  The
  16. Unix utility "cut" is located in /usr/ucb and not in /bin.  This problem
  17. has been fixed so attached is a new and imporved version (v8.1_1.18)
  18. of "da_batch".
  19.  
  20. Mike
  21. ---
  22. +--------------------------------------------------------------+
  23. | Michael P. Walsh                     mike@rtp-nc.mentorg.com |
  24. |                                       mike_walsh@mentorg.com |
  25. | Application Engineer                                         |
  26. | Mentor Graphics Corporation                   (919) 544-0200 |
  27. | 2525 Meridian Parkway, Suite 260                             |
  28. | Research Triangle Park, North Carolina 27713                 |
  29. +--------------------------------------------------------------+
  30. ==========================  CUT HERE   ===========================
  31. #! /bin/sh
  32. # This is a shell archive, meaning:
  33. # 1. Remove everything above the #! /bin/sh line.
  34. # 2. Save the resulting text in a file.
  35. # 3. Execute the file with /bin/sh (not csh) to create:
  36. #    da_batch
  37. # This archive created: Sun Nov  8 11:01:24 1992
  38. # By:    Mike Walsh ()
  39. export PATH; PATH=/bin:/usr/bin:$PATH
  40. if test -f 'da_batch'
  41. then
  42.     echo shar: "will not over-write existing file 'da_batch'"
  43. else
  44. cat << \SHAR_EOF > 'da_batch'
  45. #!/bin/sh
  46. #
  47. #  da_batch  v8.1_1.18
  48. #  
  49. #  Batch edit schematics, cables, viewpoints, etc with a "dofile".
  50. #
  51. #
  52. #  (c)  October 1992  Mentor Graphics Corporation
  53. #
  54. #
  55. #  Mike Walsh - Application Engineer
  56. #   mike@rtp-nc.mentorg.com, mike_walsh@mentorg.com
  57. #
  58. #  Mentor Graphics Corporation
  59. #  2525 Meridian Parkway,  Suite 260
  60. #  Research Triangle Park, NC  27713
  61. #
  62. #  (919) 544-0200
  63. #
  64. #  This Shell/Ampleware is NOT officially supported by Mentor Graphics!
  65. #
  66. ####################################################################
  67. ####################################################################
  68. ## The following  software  is  "freeware" which  Mentor Graphics ##
  69. ## Corporation  provides as a courtesy  to our users.  "freeware" ##
  70. ## is provided  "as is" and  Mentor  Graphics makes no warranties ##
  71. ## with  respect  to "freeware",  either  expressed  or  implied, ##
  72. ## including any implied warranties of merchantability or fitness ##
  73. ## for a particular purpose.                                      ##
  74. ####################################################################
  75. ####################################################################
  76. #
  77.  
  78. #  Support for uprooted idea tree!
  79.  
  80. MGC_HOME=${MGC_HOME-"/idea"}
  81.  
  82. PATH="$MGC_HOME/bin:/bin:/usr/bin:/etc:/usr/ucb"
  83.  
  84. TMP="$MGC_HOME/tmp"
  85.  
  86. USAGE="Usage::  `basename $0` [-help] [-usage] [-version] [-lms] [-update_auto | -update_clear | -update_instance | -update_symbol | [-update_none | -noupdate]] [-follow | -nofollow] [-preview] [-readonly] [-cable | -component | -defvpt | -schematic | -symbol | -vhdl | -vpt vpt_name] -dofile do_file_name [-args do_file_args] design_name [design_name [...]]"
  87.  
  88. #  Defaults
  89.  
  90. CABLE=""
  91. DA="da"
  92. DISCLAIMER=""
  93. DOFILE=""
  94. DOFILEARGS=""
  95. EXIT=""
  96. FOLLOW=""
  97. HELP=""
  98. OPENMODE="@editable"
  99. READONLY=""
  100. REVDATE="da_batch,v
  101. # Revision 1.18  1992/11/08  15:08:05  mike
  102. # Sun Nov  8 10:08:05 EST 1992
  103. #"
  104. REVDATE=`echo $REVDATE | sed -e 's/\#/@/' -e 's/^.*# //' -e 's/ #.*$//`
  105. UPDATE="@auto"
  106. SCHEMATIC=""
  107. SYMBOL=""
  108. USE=""
  109. VERSION="v8.1_1.18"
  110. VHDL=""
  111. VPT=""
  112.  
  113. #  Parse through command line
  114.  
  115. while [ $# -gt 0 ]
  116. do
  117.     case $1 in
  118.         -*)
  119.             case $1 in
  120.                 -args)
  121.                     shift
  122.                     DOFILEARGS=",$1" ;;
  123.                 -args*)
  124.                     DOFILEARGS=",`echo $1 | sed -e 's/.....//'`" ;;
  125.                 -cable)
  126.                     CABLE=$1 ;;
  127.                 -defvpt)
  128.                     VPT="default" ;;
  129.                 -disclaimer)
  130.                     DISCLAIMER="" ;;
  131.                 -dofile)
  132.                     shift
  133.                     DOFILE=$1 ;;
  134.                 -dofile*)
  135.                     DOFILE=`echo $1 | sed -e 's/.......//'` ;;
  136.                 -follow)
  137.                     FOLLOW="" ;;
  138.                 -help|-h)
  139.                     EXIT="$1"
  140.                     HELP="$1" ;;
  141.                 -lms)
  142.                     DA="da_lms" ;;
  143.                 -nodisclaimer)
  144.                     DISCLAIMER="$1" ;;
  145.                 -nofollow)
  146.                     FOLLOW="$1" ;;
  147.                 -noupdate)
  148.                     UPDATE="@noupdate" ;;
  149.                 -preview)
  150.                     PREVIEW="preview" ;;
  151.                 -readonly)
  152.                     READONLY=$1
  153.                     OPENMODE="@readonly" ;;
  154.                 -schematic)
  155.                     SCHEMATIC="$1" ;;
  156.                 -symbol)
  157.                     SYMBOL="`echo $1 | sed -e 's/.//'`" ;;
  158.                 -update_auto)
  159.                     UPDATE="@auto" ;;
  160.                 -update_clear)
  161.                     UPDATE="@clear" ;;
  162.                 -update_instance)
  163.                     UPDATE="@instance" ;;
  164.                 -update_none)
  165.                     UPDATE="@noupdate" ;;
  166.                 -update_symbol)
  167.                     UPDATE="@symbol" ;;
  168.                 -usage)
  169.                     EXIT="$1"
  170.                     USE="$1" ;;
  171.                 -version|-v)
  172.                     EXIT="$1" ;;
  173.                 -vhdl)
  174.                     VHDL="$1" ;;
  175.                 -vpt)
  176.                     shift
  177.                     VPT="$1" ;;
  178.                 -vpt*)
  179.                     VPT=`echo $1 | sed -e 's/....//'` ;;
  180.                 -*)
  181.                     echo "`basename $0`:  unknown option $1"
  182.                     exit 1 ;;
  183.             esac ;;
  184.         *)
  185.             DESIGNS="$DESIGNS $1" ;;
  186.     esac
  187.     shift
  188. done
  189.  
  190. #  Display the Mentor Graphics "freeware" disclaimer.
  191. #  The display of this message can be disabled the the
  192. #  "-nodisclaimer" switch.
  193.  
  194. echo "//  `basename $0` (DA Batch Edit Utility) $VERSION $REVDATE"
  195. if [ -z "$DISCLAIMER" ]
  196. then
  197.     echo "//  ##############################################################"
  198.     echo "//  The following  software  is  \"freeware\" which  Mentor Graphics"
  199.     echo "//  Corporation  provides as a courtesy  to our users.  \"freeware\""
  200.     echo "//  is provided  \"as is\" and  Mentor  Graphics makes no warranties"
  201.     echo "//  with  respect  to \"freeware\",  either  expressed  or  implied,"
  202.     echo "//  including any implied warranties of merchantability or fitness"
  203.     echo "//  for a particular purpose."
  204.     echo "//  ##############################################################"
  205. fi
  206.  
  207. if [ ! -z "$USE" ]
  208. then
  209.     echo "$USAGE"
  210. fi
  211.  
  212. if [ ! -z "$HELP" ]
  213. then
  214.     cat << EOF
  215.  
  216. $USAGE
  217.  
  218.   "`basename $0`" will batch edit schematic sheets, cable sheets, design
  219.   sheets, or vhdl source using the supplied  "do file" as the set of
  220.   edit operations.
  221.  
  222.   All objects in the database of the specified type are edited and it
  223.   is important to note that the "dofile" is NOT responsible for opening,
  224.   checking, saving, or closing design objects as all of these operations
  225.   are handled automatically by "`basename $0`".
  226.  
  227.  
  228.   Description of command line switches.  Defaults are noted with (D).
  229.  
  230.       -args A[,A[,...]]  Arguments to be suppled to the do file.
  231.                          Note that quotes charcters (",') may need
  232.                          to be escaped to avoid being interpreted by
  233.                          the shell.
  234.  
  235.       -cable             Opens schematic sheets using the Logical
  236.                          Cabling interface.
  237.  
  238.       -defvpt            Opens the schematic sheet objects through
  239.                          the default viewpoint.
  240.  
  241.       -dofile File       Specify the "do file" that is to be used
  242.                          to batch edit the design database.
  243.  
  244.       -follow        (D) Try to follow design hierarchy.
  245.  
  246.       -help              This help text.
  247.  
  248.       -lms               Design Architect with the LMS user module
  249.                          is used to execute the "do file" as opposed
  250.                          the standard load of DA.  This allows global
  251.                          LMS operations to be accomplished.
  252.  
  253.       -noupdate          Forces Design Architect to open schematic
  254.                          sheets in "noupdate" mode.
  255.  
  256.       -nofollow          Do not try to follow design hierarchy.
  257.  
  258.       -readonly          Forces Design Architect to open schematic
  259.                          sheets as "read only" objects.  The "do file"
  260.                          should not have any commands that cause edits
  261.                          to the objects as no attempt to save the objects
  262.                          is made.
  263.  
  264.       -preview           Preview the generated AMPLE function to standard
  265.                          output without actually executing the generated
  266.                          AMPLE function on the design database.
  267.  
  268.       -schematic     (D) Open and operate on schematic sheet objects.
  269.  
  270.       -symbol            Open and operate on symbol objects.
  271.  
  272.       -update_auto   (D) Forces Design Architect to open schematic
  273.                          sheets in "auto update" mode.
  274.  
  275.       -update_clear      Forces Design Architect to open schematic
  276.                          sheets in "update clear" mode.
  277.  
  278.       -update_instance   Forces Design Architect to open schematic
  279.                          sheets in "update instance" mode.
  280.  
  281.       -update_none       Forces Design Architect to open schematic
  282.                          sheets in "noupdate" mode.
  283.  
  284.       -update_symbol     Forces Design Architect to open schematic
  285.                          sheets in "update symbol" mode.
  286.  
  287.       -usage             Display brief synopsis of switches.
  288.  
  289.       -version           Print the version of `basename $0` to the
  290.                          standard output.
  291.  
  292.       -vhdl              Open and operate on VHDL design objects.
  293.  
  294.       -vpt vpt_name      Opens the schematic sheets through the
  295.                          named viewpoint.
  296.  
  297.   Examples:
  298.  
  299.       % `basename $0` -dofile my_do_file -doargs \"ARG-1\",2 mux_board
  300.  
  301.       % `basename $0` -readonly -defvpt -dofile your_do_file mux_board
  302.  
  303.  
  304. EOF
  305. fi
  306.  
  307. #  Exit if "-version" switch or "-help" was specified
  308.  
  309. if [ ! -z "$EXIT" ]
  310. then
  311.     exit 0
  312. fi
  313.  
  314. #  Make sure design arguments were supplied
  315. if [ -z "$DESIGNS" ]
  316. then
  317.     echo $USAGE
  318.     exit 1
  319. fi
  320.  
  321. #  Make sure a valid do file was passed in
  322.  
  323. if [ -z "$DOFILE" ]
  324. then
  325.     echo "`basename $0`:  \"do file\" was not specified"
  326.     exit 1
  327. elif [ ! -f "$DOFILE" ]
  328. then
  329.     echo "`basename $0`:  \"do file\" $DOFILE does not exist"
  330.     exit 1
  331. fi
  332.  
  333. #  Make sure user did not specify bogus switch combinations
  334.  
  335. ARGS="$CABLE$SCHEMATIC$SYMBOL$VHDL$VPT"
  336. if [ "$ARGS" != "$CABLE" -a "$ARGS" != "$SCHEMATIC" -a "$ARGS" != "$SYMBOL" -a "$ARGS" != "$VHDL" -a "$ARGS" != "$VPT" ]
  337. then
  338.     echo "`basename $0`:  only one of [-cable | -defvpt | -schematic | -symbol | -vhdl | -vpt] may be specified."
  339.     exit 1
  340. fi
  341.  
  342. if [ -z "$DESIGNS" ]
  343. then
  344.     echo $USAGE
  345.     exit 1
  346. fi
  347.  
  348. #  Create temporary file for holding generated AMPLE code
  349. #  that will be submitted to DA to execute the do file against
  350. #  all of the sheets with.
  351.  
  352. TMP_AMPLE="$TMP/`basename $0`.$$.ample"
  353.  
  354. if [ -f "$TMP_AMPLE" ]
  355. then
  356.     rm -f "$TMP_AMPLE"
  357.     if [ $? -ne 0 ]
  358.     then
  359.         echo "`basename $0`: trouble creating temporary file ... aborting"
  360.         exit 1
  361.     fi
  362. fi
  363.  
  364. touch "$TMP_AMPLE"
  365.  
  366. if [ $? -ne 0 ]
  367. then
  368.     echo "`basename $0`: trouble creating temporary file ... aborting"
  369.     exit 1
  370. fi
  371.  
  372. echo "function \$mgcrtp_`basename $0`(), indirect {" >> $TMP_AMPLE
  373. if [ -z "$VHDL" -a -z "$SYMBOL" ]
  374. then
  375.     echo "local schem_window, check_window ;" >> $TMP_AMPLE
  376. elif [ ! -z "$VHDL" ]
  377. then
  378.     echo "local vhdl_window ;" >> $TMP_AMPLE
  379. elif [ ! -z "$SYMBOL" ]
  380. then
  381.     echo "local symbol_window, check_window ;" >> $TMP_AMPLE
  382. else
  383.     echo "`basename $0`:  massive confusion ... aborting!"
  384.     exit 1
  385. fi
  386. echo "local session_window = \$get_active_window() ;" >> $TMP_AMPLE
  387.  
  388. for DESIGN in $DESIGNS
  389. do
  390.  
  391. #  Make sure that operations are being 
  392. #  performed on a Mentor Graphics database.
  393.  
  394.     if [ ! -d $DESIGN -o ! -f $DESIGN.mgc_component.attr ]
  395.     then
  396.         echo "`basename $0`:  mgc_component \"$DESIGN\" does not exist!"
  397.         rm -f $TMP_AMPLE
  398.         exit 1
  399.     else             
  400.         if [ -z "$VHDL" -a -z "$SYMBOL" ]
  401.         then
  402.  
  403. #  Need to figure out where and what are all of the schematic
  404. #  objects and where and what are all of sheet objects within
  405. #  those encountered schematic objects.
  406.  
  407.             if [ -z "$FOLLOW" ]
  408.             then
  409.                 SCHEM_OBJS=`find $DESIGN -type d -print | list_contents -c -t mgc_schematic`
  410.             else
  411.                 SCHEM_OBJS=`list_contents -c -t mgc_schematic $DESIGN`
  412.             fi
  413.  
  414.             if [ -z "$SCHEM_OBJS" ]
  415.             then
  416.                 echo "`basename $0`:  $DESIGN is void of objects of type mgc_schematic"
  417.                 rm -f $TMP_AMPLE
  418.                 exit 1
  419.             fi
  420.  
  421. #  Loop through all the schematic objects
  422.  
  423.             for i in $SCHEM_OBJS
  424.             do
  425.                 i=`echo $i | cut -f1 -d':'`
  426.                 SHEET_OBJS=`list_contents -c -t mgc_sheet $i`
  427.                 if [ -z "$SHEET_OBJS" ]
  428.                 then
  429.                     echo "`basename $0`:  $i is void of objects of type mgc_sheet"
  430.                 else
  431.  
  432. #  Loop though the sheet objects generating AMPLE code that will
  433. #  open each sheet, run the do file, check and  save the sheet if
  434. #  appropriate, close the sheet,  and move on.
  435.  
  436.                     for j in $SHEET_OBJS
  437.                     do
  438.                         j=`echo $j | cut -f1 -d':'`
  439.                         echo "\$set_active_window(session_window) ;" >> $TMP_AMPLE
  440.                         if [ ! -z "$CABLE" ]
  441.                         then
  442.                             echo "\$\$open_cable_sheet(\"`dirname $i`\", \"`basename $i`\", \"`basename $j`\", $OPENMODE, @void, \"\", $UPDATE) ;" >> $TMP_AMPLE
  443.                         elif [ ! -z "$VPT" ]
  444.                         then
  445.                             echo "\$set_viewpoint(\"`dirname $i`\", \"$VPT\") ;" >> $TMP_AMPLE
  446.                             echo "\$\$open_design_sheet(\"`dirname $i`\", \"$VPT\", \"/\", \"`basename $j`\", $OPENMODE, @void, \"\", $UPDATE) ;" >> $TMP_AMPLE
  447.                         else
  448.                             echo "\$\$open_sheet(\"`dirname $i`\", \"`basename $i`\", \"`basename $j`\", $OPENMODE, @void, \"\", $UPDATE) ;" >> $TMP_AMPLE
  449.                         fi
  450.                         echo "schem_window = \$get_active_window() ;" >> $TMP_AMPLE
  451.                         echo "\$set_active_window(schem_window) ;" >> $TMP_AMPLE
  452.                         echo "\$dofile(\"$DOFILE\"$DOFILEARGS) ;" >> $TMP_AMPLE
  453.                         if [ -z "$READONLY" ]
  454.                         then
  455.                             echo "\$check() ;" >> $TMP_AMPLE
  456.                             echo "check_window = \$get_active_window() ;" >> $TMP_AMPLE
  457.                             echo "\$set_active_window(check_window) ;" >> $TMP_AMPLE
  458.                             echo "\$close_window(@discard) ;" >> $TMP_AMPLE
  459.                             echo "\$set_active_window(schem_window) ;" >> $TMP_AMPLE
  460.                             echo "\$save_sheet() ;" >> $TMP_AMPLE
  461.                         fi
  462.                         echo "\$close_window(@discard) ;" >> $TMP_AMPLE
  463.                     done
  464.                 fi
  465.             done
  466.  
  467.         elif [ ! -z "$VHDL" ]
  468.         then
  469.  
  470. #  Find the VHDL objects
  471.  
  472.             if [ -z "$FOLLOW" ]
  473.             then
  474.                 VHDL_OBJS=`find $DESIGN -type d -print | list_contents -c -t vhdl`
  475.             else
  476.                 VHDL_OBJS=`list_contents -c -t vhdl $DESIGN`
  477.             fi
  478.  
  479.             if [ -z "$VHDL_OBJS" ]
  480.             then
  481.                 echo "`basename $0`:  $DESIGN is void of objects of type \"vhdl\""
  482.             else
  483.  
  484. #  Loop through all VHDL objects generating AMPLE
  485. #  code to edit the contents of each VHDL container.
  486.  
  487.                 for i in $VHDL_OBJS
  488.                 do
  489.                     i=`echo $i | cut -f1 -d':'`
  490.                     echo "\$set_active_window(session_window) ;" >> $TMP_AMPLE
  491.                     echo "\$\$open_vhdl(\"`basename $i`\", \"`dirname $i`\", $OPENMODE, 0, \"\", \"\") ;" >> $TMP_AMPLE
  492.                     echo "vhdl_window = \$get_active_window() ;" >> $TMP_AMPLE
  493.                     echo "\$set_active_window(vhdl_window) ;" >> $TMP_AMPLE
  494.                     echo "\$dofile(\"$DOFILE\") ;" >> $TMP_AMPLE
  495.                     if [ -z "$READONLY" ]
  496.                     then
  497.                         echo "\$save_document() ;" >> $TMP_AMPLE
  498.                     fi
  499.                     echo "\$close_window(@discard) ;" >> $TMP_AMPLE
  500.                 done  
  501.             fi
  502.  
  503.         elif [ ! -z "$SYMBOL" ]
  504.         then
  505.  
  506. #  Find the symbol objects 
  507.  
  508.             if [ -z "$FOLLOW" ]
  509.             then 
  510.                 SYMBOL_OBJS=`find $DESIGN -type d -print | list_contents -c -t mgc_symbol`
  511.             else     
  512.                 SYMBOL_OBJS=`list_contents -c -t mgc_symbol $DESIGN`
  513.             fi
  514.  
  515.             if [ -z "$SYMBOL_OBJS" ]
  516.             then
  517.                 echo "`basename $0`:  $DESIGN is void of objects of type \"vhdl\""
  518.             else 
  519.  
  520. #  Loop through all symbol objects generating AMPLE                                   
  521. #  code to edit the contents of each symbol container.
  522.  
  523.                 for i in $SYMBOL_OBJS
  524.                 do
  525.                     i=`echo $i | cut -f1 -d':'`
  526.                     echo "\$set_active_window(session_window) ;" >> $TMP_AMPLE
  527.                     echo "\$\$open_symbol(\"`dirname $i`\", \"`basename $i`\", $OPENMODE, \"\") ;" >> $TMP_AMPLE
  528.                     echo "symbol_window = \$get_active_window() ;" >> $TMP_AMPLE
  529.                     echo "\$set_active_window(symbol_window) ;" >> $TMP_AMPLE
  530.                     echo "\$dofile(\"$DOFILE\") ;" >> $TMP_AMPLE
  531.                     if [ -z "$READONLY" ]
  532.                     then
  533.                         echo "\$check() ;" >> $TMP_AMPLE
  534.                         echo "check_window = \$get_active_window() ;" >> $TMP_AMPLE
  535.                         echo "\$set_active_window(check_window) ;" >> $TMP_AMPLE
  536.                         echo "\$close_window(@discard) ;" >> $TMP_AMPLE
  537.                         echo "\$set_active_window(symbol_window) ;" >> $TMP_AMPLE
  538.                         echo "\$save_symbol() ;" >> $TMP_AMPLE
  539.                     fi
  540.                     echo "\$close_window(@discard) ;" >> $TMP_AMPLE
  541.                 done  
  542.             fi
  543.         else
  544.             echo "`basename $0`:  mass confusion ... aborting!"
  545.             exit 1 
  546.         fi
  547.     fi
  548. done
  549.  
  550. echo "}" >> $TMP_AMPLE
  551.  
  552. #  Invoke Design Architect and submit the  generated
  553. #  AMPLE macro as batch input to Design Architect.
  554.  
  555. if [ -z "$PREVIEW" ]
  556. then
  557.     $MGC_HOME/bin/$DA -nodisplay <<! 
  558.         \$load_userware("$TMP_AMPLE", \$window_scope_name()) ;
  559.         \$mgcrtp_`basename $0`() ;
  560.         \$\$close_session(@void) ;
  561. !
  562. else
  563.     cat $TMP_AMPLE
  564. fi
  565.  
  566. rm -f $TMP_AMPLE
  567.  
  568. exit 0
  569.  
  570. SHAR_EOF
  571. chmod +x 'da_batch'
  572. fi
  573. exit 0
  574. #    End of shell archive
  575.  
  576.