Path: utzoo!utgpu!water!watmath!uunet!bu-cs!bloom-beacon!oberon!sdcrdcf!cs.utexas.edu!milano!pp!cadillac!grout
From: grout@sunspot.cad.mcc.com (Steve Grout)
Newsgroups: gnu.emacs,comp.lsi
Subject: GNUEMACS kbd macro aids for translating 7.2 VHDL to 1076 VHDL
Message-ID:
Date: 13 Jul 88 08:54:17 GMT
Sender: news@cadillac.CAD.MCC.COM
Organization: MCC CAD Program
Lines: 469
;;; -*- 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 - '(''..)
;;; 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 ;
; use ;
; IS:
; -- with package ;
; use .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 ( ) is
; generic ( )
; IS:
; entity is
; generic ( < generic decls> ) ;
; port ( ) ;
; 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 of is
; : block
; begin
; ...
; end block ;
; end ;
; IS:
; architecture of is
; -- : block
; begin
; ...
; -- end block ;
; end ;
; FUNCTION: fix-arch-block
; BINDING: meta-c-A
;
(fset 'fix-arch-block
"architectureffb
(global-set-key "" 'fix-arch-block) ; meta-c-A
;;; ------------------------------------------------------------
; WAS:
; for := loop .. end loop ;
; IS:
; for in 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:
;
;
; IS:
; --
; --
; --
; IS:
;
;
; 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 ;
; use ;
; package ;
;
; end ;
; IS:
; -- with package ;
; use .all ;
; package body ;
;
; end ;
; 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 is
;
; end ;
; IS:
; use .all ;
; package body is
;
; end ;
; 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 is
; ;
; end ;
; IS:
; use .all ;
; package is
; ;
; end ;
; use .all ;
; package body is
; ;
; end ;
; 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 of is
; ...
; component port ( ) ;
; begin
;