Ignore SDF COND and CONDELSE delay definitions.
This commit is contained in:
parent
e4476d544f
commit
8c80193fc5
|
|
@ -55,7 +55,7 @@ O = sys_table.o sys_convert.o sys_countdrivers.o sys_darray.o sys_deposit.o sys_
|
|||
sys_fileio.o sys_finish.o sys_icarus.o sys_plusargs.o sys_queue.o \
|
||||
sys_random.o sys_random_mti.o sys_readmem.o sys_readmem_lex.o sys_scanf.o \
|
||||
sys_sdf.o sys_time.o sys_vcd.o sys_vcdoff.o vcd_priv.o mt19937int.o \
|
||||
sys_priv.o sdf_lexor.o sdf_parse.o stringheap.o vams_simparam.o \
|
||||
sys_priv.o sdf_parse.o sdf_lexor.o stringheap.o vams_simparam.o \
|
||||
table_mod.o table_mod_lexor.o table_mod_parse.o
|
||||
OPP = vcd_priv2.o
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
%{
|
||||
/*
|
||||
* Copyright (c) 2007-2010 Stephen Williams (steve@icarus.com)
|
||||
* Copyright (c) 2007-2014 Stephen Williams (steve@icarus.com)
|
||||
*
|
||||
* This source code is free software; you can redistribute it
|
||||
* and/or modify it in source code form under the terms of the GNU
|
||||
|
|
@ -107,6 +107,11 @@ static int yywrap(void)
|
|||
"===" { return K_CEQ; }
|
||||
"!==" { return K_CNE; }
|
||||
|
||||
/* Other operators. */
|
||||
|
||||
"&&" { return K_LAND; }
|
||||
"||" { return K_LOR; }
|
||||
|
||||
/* The HCHAR (hierarchy separator) is set by the SDF file itself. We
|
||||
recognize here the HCHAR. */
|
||||
[./] {
|
||||
|
|
@ -124,34 +129,36 @@ static struct {
|
|||
const char*name;
|
||||
int code;
|
||||
} keywords[] = {
|
||||
{ "ABSOLUTE", K_ABSOLUTE },
|
||||
{ "CELL", K_CELL },
|
||||
{ "CELLTYPE", K_CELLTYPE },
|
||||
{ "DATE", K_DATE },
|
||||
{ "DELAY", K_DELAY },
|
||||
{ "DELAYFILE", K_DELAYFILE },
|
||||
{ "DESIGN", K_DESIGN },
|
||||
{ "DIVIDER", K_DIVIDER },
|
||||
{ "HOLD", K_HOLD },
|
||||
{ "INCREMENT", K_INCREMENT },
|
||||
{ "INTERCONNECT",K_INTERCONNECT },
|
||||
{ "INSTANCE", K_INSTANCE },
|
||||
{ "IOPATH", K_IOPATH },
|
||||
{ "PROCESS", K_PROCESS },
|
||||
{ "PROGRAM", K_PROGRAM },
|
||||
{ "RECREM", K_RECREM },
|
||||
{ "RECOVERY", K_RECOVERY },
|
||||
{ "REMOVAL", K_REMOVAL },
|
||||
{ "SDFVERSION", K_SDFVERSION },
|
||||
{ "SETUP", K_SETUP },
|
||||
{ "SETUPHOLD", K_SETUPHOLD },
|
||||
{ "TEMPERATURE",K_TEMPERATURE },
|
||||
{ "TIMESCALE", K_TIMESCALE },
|
||||
{ "TIMINGCHECK",K_TIMINGCHECK },
|
||||
{ "VENDOR", K_VENDOR },
|
||||
{ "VERSION", K_VERSION },
|
||||
{ "VOLTAGE", K_VOLTAGE },
|
||||
{ "WIDTH", K_WIDTH },
|
||||
{ "ABSOLUTE", K_ABSOLUTE },
|
||||
{ "CELL", K_CELL },
|
||||
{ "CELLTYPE", K_CELLTYPE },
|
||||
{ "DATE", K_DATE },
|
||||
{ "COND", K_COND },
|
||||
{ "CONDELSE", K_CONDELSE },
|
||||
{ "DELAY", K_DELAY },
|
||||
{ "DELAYFILE", K_DELAYFILE },
|
||||
{ "DESIGN", K_DESIGN },
|
||||
{ "DIVIDER", K_DIVIDER },
|
||||
{ "HOLD", K_HOLD },
|
||||
{ "INCREMENT", K_INCREMENT },
|
||||
{ "INTERCONNECT", K_INTERCONNECT },
|
||||
{ "INSTANCE", K_INSTANCE },
|
||||
{ "IOPATH", K_IOPATH },
|
||||
{ "PROCESS", K_PROCESS },
|
||||
{ "PROGRAM", K_PROGRAM },
|
||||
{ "RECREM", K_RECREM },
|
||||
{ "RECOVERY", K_RECOVERY },
|
||||
{ "REMOVAL", K_REMOVAL },
|
||||
{ "SDFVERSION", K_SDFVERSION },
|
||||
{ "SETUP", K_SETUP },
|
||||
{ "SETUPHOLD", K_SETUPHOLD },
|
||||
{ "TEMPERATURE", K_TEMPERATURE },
|
||||
{ "TIMESCALE", K_TIMESCALE },
|
||||
{ "TIMINGCHECK", K_TIMINGCHECK },
|
||||
{ "VENDOR", K_VENDOR },
|
||||
{ "VERSION", K_VERSION },
|
||||
{ "VOLTAGE", K_VOLTAGE },
|
||||
{ "WIDTH", K_WIDTH },
|
||||
{ 0, IDENTIFIER }
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
|
||||
%{
|
||||
/*
|
||||
* Copyright (c) 1998-2010 Stephen Williams (steve@icarus.com)
|
||||
* Copyright (c) 1998-2014 Stephen Williams (steve@icarus.com)
|
||||
*
|
||||
* This source code is free software; you can redistribute it
|
||||
* and/or modify it in source code form under the terms of the GNU
|
||||
|
|
@ -44,13 +44,15 @@ char sdf_use_hchar = '.';
|
|||
struct sdf_delval_list_s delval_list;
|
||||
};
|
||||
|
||||
%token K_ABSOLUTE K_CELL K_CELLTYPE K_COND K_DATE K_DELAYFILE K_DELAY K_DESIGN
|
||||
%token K_DIVIDER K_HOLD K_INCREMENT K_INSTANCE K_INTERCONNECT K_IOPATH
|
||||
%token K_NEGEDGE K_POSEDGE K_PROCESS K_PROGRAM K_RECREM K_RECOVERY
|
||||
%token K_REMOVAL K_SDFVERSION K_SETUP K_SETUPHOLD K_TEMPERATURE
|
||||
%token K_TIMESCALE K_TIMINGCHECK K_VENDOR K_VERSION K_VOLTAGE K_WIDTH
|
||||
%token K_ABSOLUTE K_CELL K_CELLTYPE K_COND K_CONDELSE K_DATE K_DELAYFILE
|
||||
%token K_DELAY K_DESIGN K_DIVIDER K_HOLD K_INCREMENT K_INSTANCE
|
||||
%token K_INTERCONNECT K_IOPATH K_NEGEDGE K_POSEDGE K_PROCESS K_PROGRAM
|
||||
%token K_RECREM K_RECOVERY K_REMOVAL K_SDFVERSION K_SETUP K_SETUPHOLD
|
||||
%token K_TEMPERATURE K_TIMESCALE K_TIMINGCHECK K_VENDOR K_VERSION
|
||||
%token K_VOLTAGE K_WIDTH
|
||||
%token K_01 K_10 K_0Z K_Z1 K_1Z K_Z0
|
||||
%token K_EQ K_NE K_CEQ K_CNE K_LOGICAL_ONE K_LOGICAL_ZERO
|
||||
%token K_LAND K_LOR
|
||||
|
||||
%token HCHAR
|
||||
%token <string_val> QSTRING IDENTIFIER
|
||||
|
|
@ -70,6 +72,10 @@ char sdf_use_hchar = '.';
|
|||
|
||||
%type <delval_list> delval_list
|
||||
|
||||
%left K_LOR
|
||||
%left K_LAND
|
||||
%left K_EQ K_NE K_CEQ K_CNE
|
||||
|
||||
%%
|
||||
|
||||
source_file
|
||||
|
|
@ -261,6 +267,26 @@ del_def
|
|||
| '(' K_IOPATH error ')'
|
||||
{ vpi_printf("%s:%d: SDF ERROR: Invalid/malformed IOPATH\n",
|
||||
sdf_parse_path, @2.first_line); }
|
||||
| '(' K_COND conditional_port_expr
|
||||
'(' K_IOPATH port_spec port_instance delval_list ')' ')'
|
||||
{
|
||||
/* Skip conditional path back annotation for now. */
|
||||
}
|
||||
| '(' K_COND QSTRING conditional_port_expr
|
||||
'(' K_IOPATH port_spec port_instance delval_list ')' ')'
|
||||
{
|
||||
/* Skip conditional path back annotation for now. */
|
||||
}
|
||||
| '(' K_COND error ')'
|
||||
{ vpi_printf("%s:%d: SDF ERROR: Invalid/malformed COND\n",
|
||||
sdf_parse_path, @2.first_line); }
|
||||
| '(' K_CONDELSE '(' K_IOPATH port_spec port_instance delval_list ')' ')'
|
||||
{
|
||||
/* Skip ifnone back annotation for now. */
|
||||
}
|
||||
| '(' K_CONDELSE error ')'
|
||||
{ vpi_printf("%s:%d: SDF ERROR: Invalid/malformed CONDELSE\n",
|
||||
sdf_parse_path, @2.first_line); }
|
||||
/* | '(' K_INTERCONNECT port_instance port_instance delval_list ')' */
|
||||
| '(' K_INTERCONNECT port_interconnect port_interconnect delval_list ')'
|
||||
{ if (sdf_flag_warning) vpi_printf("%s:%d: SDF WARNING: "
|
||||
|
|
@ -322,6 +348,19 @@ timing_check_condition
|
|||
| port_interconnect equality_operator scalar_constant
|
||||
;
|
||||
|
||||
/* This is not complete! */
|
||||
conditional_port_expr
|
||||
: port
|
||||
| scalar_constant
|
||||
| '(' conditional_port_expr ')'
|
||||
| conditional_port_expr K_LAND conditional_port_expr
|
||||
| conditional_port_expr K_LOR conditional_port_expr
|
||||
| conditional_port_expr K_EQ conditional_port_expr
|
||||
| conditional_port_expr K_NE conditional_port_expr
|
||||
| conditional_port_expr K_CEQ conditional_port_expr
|
||||
| conditional_port_expr K_CNE conditional_port_expr
|
||||
;
|
||||
|
||||
equality_operator
|
||||
: K_EQ
|
||||
| K_NE
|
||||
|
|
|
|||
Loading…
Reference in New Issue