grout@sunspot.cad.mcc.com (Steve Grout) (07/13/88)
;;; -*- mode: emacs-lisp -*-
;;; ************************************************************************
;;; Copyright (C) 1988 Microelectronics and Computer Technology Corporation
;;; - VLSI CAD Program - %Y%
;;; ************************************************************************
;;; File Contents: Aids For Translating 7.2 VHDL to IEEE 1076-1987 VHDL
;;; This file may be redistributed provided the above copyright notice
;;; appears on all copies and that the further free redistribution of this
;;; file is not in any way restricted by those who redistribute it.
;;;
;;; These gnuemacs aids are distributed 'as is', without warranties of any kind.
;;;
;;; This file is not part of any MCC proprietary or DoD VHDL software.
;;;
;;; Author: Steve Grout
;;;
;;; **********************************************************************
;;; DESCRIPTION: Save this message as a file named "translate-72-to-1076.el".
;;;
;;; This file describes the generic changes that will be made
;;; using GNU-EMACS keyboard macro command definitions
;;; to convert ../VHD/CH*/*.vhd 7.2 files to ../VHD/CH*/*.vhdl 1076 files.
;;; Each section briefly describes what the 7.2 language construct WAS
;;; and what it should be in order to be proper 1076 VHDL.
;;; Each 'fset' expression was created as keyboard macro, named,
;;; inserted into this file, and bound to an available key.
;;; The 'BINDING - ACTION' table below summarizes the bindings
;;; and under the conditions this file is used by the author
;;; shows up as a 'reminder' buffer at the top of the screen.
;;;
;;; Most of the actual translation commands work in the current
;;; buffer window and are therefore independent of the current
;;; gnuemacs screen/windowing configuration.
;;;
;;; However a few commands (e.g., meta-c-shift-B, meta-c-shift-N) presume
;;; that the current gnuemacs window is about 120-chars by
;;; 55-lines in size, a *shell* buffer has been started, this
;;; file has both been loaded and is in a buffer, the chapter
;;; of interest (e.g., ../VHD/CH10/*) is in a dired buffer with
;;; the point at the file being edited, and the file of interest
;;; is a buffer, the shell window is cd'd to the chapter of interest,
;;; and that the command to VHDL analyze a file is 'va'. Also
;;; the shell assumes a UNIX 'csh'.
;;;
;;; This somewhat complicated setup allows for very
;;; fast editing, verification, and moving on to the next file.
;;;
;;; If all of that is too much to follow, then just ignore that
;;; part. (All of this is quite easy to CREATE but much more
;;; complicated to change...most of the time, a new keyboard was
;;; simply created to do the most correct action and took the
;;; place of the previous definition.)
;;; --jsgrout 5/5/88
;;;
;;; Modification History
;;; --------------------------------------------------------------------
;;; Cleaned up, added copyright boiler-plate, description, and posted
;;; to vhdl-sw@simtel20.arpa, info-vlsi@think.com, and comp.lis --jsgrout 7/14/88
;;; **********************************************************************
;;;
;;; --------------------------------------------------------------
;;; BINDING: ACTION:
;;; --------------------------------------------------------------
;;;
;;; meta-c-W Fix with-package
;;; meta-shift-B Fix with-package and add package body
;;; meta-shift-P Change package to package body
;;; meta-c-P Fix entity ports
;;; meta-c-A Fix architectural block
;;; meta-c-F Fix for-loop
;;; meta-c-shift-C Fix component declarations/instantiations
;;: meta-c-shift-Q fix standalone function
;;; meta-K Fix package containing a function
;;; meta-G fix-qualified-name - <name>'('<lit>'..)
;;; meta-S Fix signal target list
;;; meta-A Fix attribute specification
;;; c-X c-T Fix attribute declaration
;;; meta-c-shift-Y create a mail message from current shell buffer
;;; meta-c-shift-D Move current test to ../VHD/Dead directory.
;;; meta-c-shift-N Save, rename, and edit next file
;;; meta-c-shift-B test file referenced by vhdl buffer, assuming
;;; standard translate window setup.
;;; meta-o h Update DoD header for 1076 update, sccs
;;; meta-shft-; Comment out line
;;; meta-; Uncomment out line
;;;
;;; ------------------------------------------------------------
;
;;; ; make sure cant exit X-emacs unless I want to.
;;; If I type c-X C-X the worst I do is save buffers...
(global-set-key "" 'save-some-buffers)
;;; ------------------------------------------------------------
;1. Convert 'with package, ..use package' statements:
; WAS:
; with package <name> ;
; use <name>;
; IS:
; -- with package <name> ;
; use <name>.all ;
; FUNCTION: fix-with-package
; BINDING: meta-c-W
(fset 'fix-with-package
"with-- use ;.alluse
(global-set-key "" 'fix-with-package) ; meta-c-W
;;; ------------------------------------------------------------
;2. Convert Entity Port & Generic Statements:
; WAS:
; entity <name> ( <port list> ) is
; generic ( <generic decls> )
; IS:
; entity <name> is
; generic ( < generic decls> ) ;
; port ( <port list> ) ;
; FUNCTION: fix-entity-ports
; BINDING: meta-c-P
;
(fset 'fix-entity-ports
"entity()
(global-set-key "" 'fix-entity-ports) ; meta-c-P
;;; ------------------------------------------------------------
;3. Convert Architectural bodies:
; WAS:
; architecture <name> of <name> is
; <lable> : block
; begin
; ...
; end block ;
; end <name> ;
; IS:
; architecture <name> of <name> is
; -- <lable> : block
; begin
; ...
; -- end block ;
; end <name>;
; FUNCTION: fix-arch-block
; BINDING: meta-c-A
;
(fset 'fix-arch-block
"architectureffb
(global-set-key "" 'fix-arch-block) ; meta-c-A
;;; ------------------------------------------------------------
; WAS:
; for <name> := <range> loop .. end loop ;
; IS:
; for <name> in <range> loop .. end loop ;
; FUNCTION: fix-for-loop
; BINDING: meta-c-F
(fset 'fix-for-loop
"for:=
(global-set-key "" 'fix-for-loop) ; meta-c-F
;;; ------------------------------------------------------------
; 5. Comment out line VHDL-style
; WAS:
; <anything>
; <anything>
; IS:
; -- <anything>
; -- <anything
; FUNCTION: vhdl-comment-out-line
; BINDING: meta-shift-;
(fset 'vhdl-comment-out-line
"--")
(global-set-key ":" 'vhdl-comment-out-line) ; meta-shift-;
;;; ------------------------------------------------------------
; 6. Uncomment VHDL-style line
; WAS:
; --<anything>
; <anything> -- <anything>
; IS:
; <anything>
; <anything> <anything>
; FUNCTION: vhdl-uncomment-line
; BINDING: meta-;
(fset 'vhdl-uncomment-line
"--")
(global-set-key ";" 'vhdl-uncomment-line) ; meta-;
;;; ------------------------------------------------------------
;1. Convert package statements to package-body statements:
; WAS:
; with package <name>;
; use <name>;
; package <name> ;
; <statements>
; end <name> ;
; IS:
; -- with package <name>;
; use <name>.all ;
; package body <name> ;
; <statements>
; end <name> ;
; FUNCTION: fix-with-package-body
; BINDING: meta-shift-B
(fset 'fix-with-package-body
"with-- useb
(global-set-key "B" 'fix-with-package-body) ; meta-shift-B
;;; ------------------------------------------------------------
; WAS:
; (not applicable)
; IS:
;
; FUNCTION: after editing is complete, save the current buffer,
; kill the buffer, go back to the chapter buffer,
; rename the file to .vhdl, and begin editing the next file.
; BINDING: meta-c-shift-N
(fset 'save-and-get-next-file
"k
(global-set-key "" 'save-and-get-next-file); meta-c-shift-N
;;; ------------------------------------------------------------
; WAS:
; package <name> is
; <package declarations which belong in package body>
; end <name> ;
; IS:
; use <name>.all ;
; package body <name> is
; <package body declarations, including FUNCTIONs>
; end <name> ;
; FUNCTION: Change from package declaration to package body
; BINDING: meta-shift-P
(fset 'change-to-package-body
"packagebody
(global-set-key "P" 'change-to-package-body); meta-shift-P
;;; ------------------------------------------------------------
; WAS:
; package <name> is
; <function> ;
; end <name> ;
; IS:
; use <name>.all ;
; package <name> is
; <function declaration> ;
; end <name> ;
; use <name>.all ;
; package body <name> is
; <function specification> ;
; end <name> ;
; FUNCTION: fix package containing a function.
; BINDING: meta-shift-P
(fset 'fix-package-function
"package
(global-set-key "k" 'fix-package-function)
;;; ------------------------------------------------------------
; FUNCTION: Save and run thru VHDL analyzer in next window.
; BINDING: meta-c-shift-B
(fset 'test-vhdl-buffer
"3o
(global-set-key "" 'test-vhdl-buffer); meta-c-shift-B
;;; ------------------------------------------------------------
; WAS:
; Architecture <name> of <name> is
; ...
; component <name> port ( <port list> ) ;
; begin
; <label>: <name> port ( (<portlist>), <portlist>) ;
; end <name> ;
; IS:
; Architecture <name> of <name> is
; ...
; component <name> port ( <port list> ) ;
; END COMPONENT ;
; begin
; <label>: <name> port MAP( <portlist> ) ;
; end <name> ;
; FUNCTION: Fix Component Declaration, Instantiations.
; BINDING: meta-c-shift-C
(fset 'fix-components
"componentport );
(global-set-key "" 'fix-components); meta-c-shift-C
;;; ------------------------------------------------------------
; WAS:
; function <name> ...
; ...
; end <name>;
; IS:
; use P.all ;
; package body P is
; function <name> ...
; ...
; end <name>;
; end P ;
; FUNCTION: fix-standalone-function
; BINDING: meta-c-shift-Q
(fset 'fix-standalone-function
"function
(global-set-key "" 'fix-standalone-function) ;
;;; ------------------------------------------------------------
; WAS:
; <Results for a given test.>
; IS:
; To: <project-leader>
; From: <Tester>
; Subject: Error not found during Acceptance Test
; Cc: <tester>
; --text follows this line--
; file: <test file name>
; command: <command used to generate below results>
; <run time results for a given test.>
;
; FUNCTION: create a mail message from current shell buffer
; BINDING: meta-c-shift-Y
(fset 'make-error-mail-message
"
(global-set-key "" 'make-error-mail-message) ;
;;; ------------------------------------------------------------
; WAS:
; <current acceptance file - not yet a proper 1076 test..>
; IS:
; <file no longer in its original Analyzer/VHD chapter directory.>
; FUNCTION: Move current test to ../VHD/Dead directory.
; BINDING: meta-c-shift-D
(fset 'move-test-to-Dead-dir
"3o
(global-set-key "" 'move-test-to-Dead-dir)
;;; ------------------------------------------------------------
; WAS:
; <signal-list> <= waveform ;
; IS:
; ( <signal-list ) <= waveform ;
; FUNCTION: Fix signal target list
; BINDING: meta-S
(fset 'fix-signal-target-list
"fb( <=) ")
(global-set-key "s" 'fix-signal-target-list)
;;; ------------------------------------------------------------
; WAS:
; .. <name>'('<literal-charactar>'..)
; IS:
; .. <name> ' ('<literal-charactar>'..)
; FUNCTION: fix-qualified-name
; - a temporary fix for current analyzer bug.
; BINDING: meta-G
(fset 'fix-qualified-name
"'(' ")
(global-set-key "g" 'fix-qualified-name)
;;; ------------------------------------------------------------
; WAS:
; for <attrname> of <entityclass> <entityname> use <expr> ;
; IS:
; attribute <attrname> of <entityname>:<entityclass> is <expr> ;
; FUNCTION: fix attribute specification
; BINDING: meta-a
(fset 'fix-attribute-specification
"for attribute t : dis")
(global-set-key "a" 'fix-attribute-specification)
;;; ------------------------------------------------------------
; WAS:
; attribute <name> of <entityclass> is <typemark> ;
; IS:
; attribute <name> : <typemark> ;
; FUNCTION:
; BINDING:
(fset 'fix-attribute-declaration
"attribute
(global-set-key "" 'fix-attribute-declaration)
;;; ------------------------------------------------------------
; WAS: <original DoD/Intermetrics test header>
; IS: Added SCCS fields and modification notice
; indicating updating of test to 1076 std at mcc.com
; FUNCTION: Update DoD test headers for sccs, 1076 change
; BINDING:
(fset 'update-DoD-header
"---------- File: %P%Original file name:
(global-set-key "oh" 'update-DoD-header)
;;; ------------------------------------------------------------
(fset 'update-DoD-header-next
"k
(global-set-key "on" 'update-DoD-header-next)
;;; ------------------------------------------------------------
;;; The following are
;;; gnuemacs commands to setup a bunch of windows after
;;; restarting X-emacs. Note that there are key-bound
;;; macros for both 80x50 and 120x50 sized windows, with
;;; the default being a 120x50 size.
;;;;
;;; To start up a set of test translation windows,
;;; do the following:
;;;;
;;; 1. meta-x load-file ~/.emacs
;;; 2. meta-x load-file $VHDL_EMACS/init_vhdl ;; which defines where 'va' is.
;;; 3. meta-x dired $VHDL_TEST/Analyzer/VHD/
;;; 4. meta-x load-file translate-72-to-1076.el
;;; and then edit that file as well
;;; 5. Go to the VHD dired buffer and
;;; movethe cursor to the desired chapter and type:
;;; meta-c-shift-T to start a window setup.
;;; 6. Once the chapter 'dired' comes up,
;;; move the mouse to the first file of interest
;;; and edit (with 'E')
;;; 7. Move to *shell* window, and give the command:
;;; % cd <chapter-name>
;;; 8. Now give the 'reset-test-window by typing:
;;; meta-c-shift-R
;;;
;;; Everything should now be up and in the proper
;;; configuration with your mouse in the file buffer
;;; ready to start/continue editting.
;;;
;;; Install via:
;;; meta-X load-file
;;; setup-test-windows.el
;;;
;;; Defined Keys:
;;; meta-c-shift-T: Setup test windows - do after startup of 'X-emacs &'
;;; (Assumes you have ONLY the VHD buffer up so far.)
;;; meta-c-shift-R: restart test windows - puts windows in normal format
;;; (Assumes you have ALL the buffers up already, including
;;; translate-72-to-1076.el, <chapter-buffer>, and *shell*.)
;;; meta-c-shift-L: reload VHDL conversion gnuemacs macros.
;;; meta-c-shift-B: Test the VHDL file in the current buffer, assuming
;;; standard translate window setup.
;;;
;;; Author: JSGRout 5/13/88
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(fset 'setup-80x50-test-window ; this sets up an 80X50 window ;
"1bVHD
(fset 'setup-120x50-test-window ; this sets up a 120X50 window
"1bVHD
(global-set-key "" 'setup-120x50-test-window); Meta-c-shift-T: setup test windows
(fset 'restart-80x50-test-window ; this restarts a 80x50 window set
"1btranslate-72-to-1076.el
;(fset 'restart-120x50-test-window ; this restarts a 120x50 window set
; "1btranslate-72-to-1076.el
(fset 'restart-120x50-test-window ; this restarts a 120x50 window set
"1btranslate-72-to-1076.el
(global-set-key "" 'restart-120x50-test-window); Meta-c-shift-R: restart test windows
(fset 'reload-test-macros
"xload-file
(global-set-key "" 'reload-test-macros); meta-c-shift-L: reload test macros
(fset 'test-vhdl-buffer
"3o
(global-set-key "" 'test-vhdl-buffer); meta-c-shift-B
--
Steve Grout @ MCC VLSI CAD Program, Austin TX. [512] 343-0860
ARPA: grout@mcc.arpa
UUCP: {ihnp4,seismo,harvard,gatech,pyramid}!ut-sally!im4u!milano!grout