
/************************************************************
**
**       COPYRIGHT (C) 1988 UNIVERSITY OF PITTSBURGH
**       COPYRIGHT (C) 1988-1989 Alan R. Martello
**                  ALL RIGHTS RESERVED
**
**        This software is distributed on an as-is basis
**        with no warranty implied or intended.  No author
**        or distributor takes responsibility to anyone
**        regarding its use of or suitability.
**
**        The software may be distributed and modified
**        freely for academic and other non-commercial
**        use but may NOT be utilized or included in whole
**        or part within any commercial product.
**
**        This copyright notice must remain on all copies
**        and modified versions of this software.
**
************************************************************/



#define MOD_START      "M_"     /*  start of a new module  */
#define MOD_START_EXP  "MX"     /*  start of architecure expanded around  */
#define MOD_PORT       "MP"     /*  start of module port declarations  */

#define MOD_VIEW_HIER   "MH"    /*  start of module hierarchy, for PSU  */
#define MOD_VIEW_FLAT   "MF"    /*  start of module flattend, for vsim simulator  */

#define SEP_CHAR  '.'           /*  entity and architecture separator (i.e. entity.architecture)  */

#define HIER_SIG        "HS"    /*  local signals  */
#define HIER_ASSMT      "HA"    /*  assignment statements  */
#define HIER_BLOCK      "HB"    /*  another nested block  */
#define HIER_COMP       "HC"    /*  component instantiations  */
#define HIER_PROC       "HP"    /*  process blocks  */

#define HIER_PROC_SENS  "PN"    /*  process sensitivity list */
#define HIER_PROC_VDEC  "PD"    /*  process variable declaration  */

#define HIER_PROC_SIG   "PS"    /*  process sig. assignment  */
#define HIER_PROC_VAR   "PV"    /*  process var. assignment  */

#define HIER_PROC_IF    "PI"    /*  process if statement     */
#define HIER_PROC_COND  "IC"    /*  conditional statement    */
#define HIER_PROC_ELSE  "IE"    /*  else statement           */

#define HIER_PROC_CASE  "HK"    /*  case statement           */
#define HIER_PROC_C_EXP "KE"    /*  case expression          */
#define HIER_PROC_C_CH  "KC"    /*  case choice              */
#define HIER_PROC_C_OTH "KO"    /*  case others              */

#define HIER_PROC_LOOP  "PL"    /*  looping construct        */
#define HIER_PROC_FOR   "LF"    /*  for loop with condition  */
#define HIER_PROC_WHILE "LW"    /*  while loop with cond.    */
#define HIER_PROC_NEXT  "LN"    /*  loop 'next' statement    */
#define HIER_PROC_EXIT  "LE"    /*  loop 'exit' statement    */

#define HIER_PROC_WAIT_COND "WC" /*  a wait with a contitional  */
#define HIER_PROC_WAIT_UN   "WU" /*  a wait with an until  */

#define FLAT_SIG        "FS"    /*  definition of signals  */
#define FLAT_GATE       "FG"    /*  a 'gate' */
#define FLAT_PROC       "FP"    /*  a process statement  */

#define IVF_OPEN_CHAR   '{'
#define IVF_CLOSE_CHAR  '}'

#define IVF_OPEN_STR    "{"
#define IVF_CLOSE_STR   "}"

/*
** VHDL token declarations
*/
#define TOK_AFTER  "AFTER"
#define TOK_ELSE   "ELSE"
#define TOK_WHEN   "WHEN"
#define TOK_NOT    "NOT"
#define TOK_ASSMT  "<="
#define TOK_VAR_ASSMT ":="
#define TOK_IN     "IN"
#define TOK_OUT    "OUT"
#define TOK_NULL   ""
#define TOK_SELECT "SELECT"
#define TOK_WITH   "WITH"
#define TOK_COMMA  ","
#define TOK_BAR    "|"
#define TOK_TO     "TO"
#define TOK_DOWNTO "DOWNTO"
#define TOK_GUARDED "GUARDED"
#define TOK_RISING  "RISING"
#define TOK_FALLING "FALLING"

/* 'gate' type definitions 
** 
**  ADDITIONS TO THIS LIST MUST BE REFLECTED IN vcomp/proc.h !!
 */
#define GATE_AND        0x01
#define GATE_OR         0x02
#define GATE_NAND       0x03
#define GATE_NOR        0x04
#define GATE_XOR        0x05
#define GATE_NOT        0x06
#define GATE_NULL       0x07
#define GATE_COND       0x08
#define GATE_SEL        0x09
#define GATE_PLUS       0x0a
#define GATE_MINUS      0x0b
#define GATE_CONCAT     0x0c
#define GATE_EQ         0x0d
#define GATE_NE         0x0e
#define GATE_LT         0x0f
#define GATE_LE         0x10
#define GATE_GT         0x11
#define GATE_GE         0x12
#define GATE_FOR_UP     0x13
#define GATE_FOR_DOWN   0x14
#define GATE_WHILE      0x15
#define GATE_BAG        0x16
#define GATE_RISING     0x17
#define GATE_FALLING    0x18
#define GATE_MULT       0x19
#define GATE_DIV        0x1a
#define GATE_MOD        0x1b
#define GATE_REM        0x1c

#define GATE_AND_STR    "AND"
#define GATE_OR_STR     "OR"
#define GATE_NAND_STR   "NAND"
#define GATE_NOR_STR    "NOR"
#define GATE_XOR_STR    "XOR"
#define GATE_NOT_STR    "NOT"
#define GATE_NULL_STR   "NL_GATE"
#define GATE_COND_STR   "COND"
#define GATE_SEL_STR    "SELECT"
#define GATE_CONCAT_STR "CONCAT"
#define GATE_PLUS_STR   "PLUS"
#define GATE_MINUS_STR  "MINUS"
#define GATE_EQ_STR     "EQ"
#define GATE_NE_STR     "NE"
#define GATE_LT_STR     "LT"
#define GATE_LE_STR     "LE"
#define GATE_GT_STR     "GT"
#define GATE_GE_STR     "GE"
#define GATE_FOR_UP_STR    "TO"
#define GATE_FOR_DOWN_STR  "DOWNTO"
#define GATE_WHILE_STR  "WHILE"
#define GATE_BAG_STR    ";"     /*  a bag is just a list of items  */
#define GATE_RISE_STR   "RISING"
#define GATE_FALL_STR   "FALLING"
#define GATE_MULT_STR   "MULT"
#define GATE_DIV_STR    "DIV"
#define GATE_MOD_STR    "MOD"
#define GATE_REM_STR    "REM"

/*  gate delay/guard definitions  */
#define NO_DELAY 0

