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_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_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_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
|
table_mod.o table_mod_lexor.o table_mod_parse.o
|
||||||
OPP = vcd_priv2.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
|
* This source code is free software; you can redistribute it
|
||||||
* and/or modify it in source code form under the terms of the GNU
|
* 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_CEQ; }
|
||||||
"!==" { return K_CNE; }
|
"!==" { return K_CNE; }
|
||||||
|
|
||||||
|
/* Other operators. */
|
||||||
|
|
||||||
|
"&&" { return K_LAND; }
|
||||||
|
"||" { return K_LOR; }
|
||||||
|
|
||||||
/* The HCHAR (hierarchy separator) is set by the SDF file itself. We
|
/* The HCHAR (hierarchy separator) is set by the SDF file itself. We
|
||||||
recognize here the HCHAR. */
|
recognize here the HCHAR. */
|
||||||
[./] {
|
[./] {
|
||||||
|
|
@ -128,6 +133,8 @@ static struct {
|
||||||
{ "CELL", K_CELL },
|
{ "CELL", K_CELL },
|
||||||
{ "CELLTYPE", K_CELLTYPE },
|
{ "CELLTYPE", K_CELLTYPE },
|
||||||
{ "DATE", K_DATE },
|
{ "DATE", K_DATE },
|
||||||
|
{ "COND", K_COND },
|
||||||
|
{ "CONDELSE", K_CONDELSE },
|
||||||
{ "DELAY", K_DELAY },
|
{ "DELAY", K_DELAY },
|
||||||
{ "DELAYFILE", K_DELAYFILE },
|
{ "DELAYFILE", K_DELAYFILE },
|
||||||
{ "DESIGN", K_DESIGN },
|
{ "DESIGN", K_DESIGN },
|
||||||
|
|
|
||||||
|
|
@ -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
|
* This source code is free software; you can redistribute it
|
||||||
* and/or modify it in source code form under the terms of the GNU
|
* 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;
|
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_ABSOLUTE K_CELL K_CELLTYPE K_COND K_CONDELSE K_DATE K_DELAYFILE
|
||||||
%token K_DIVIDER K_HOLD K_INCREMENT K_INSTANCE K_INTERCONNECT K_IOPATH
|
%token K_DELAY K_DESIGN K_DIVIDER K_HOLD K_INCREMENT K_INSTANCE
|
||||||
%token K_NEGEDGE K_POSEDGE K_PROCESS K_PROGRAM K_RECREM K_RECOVERY
|
%token K_INTERCONNECT K_IOPATH K_NEGEDGE K_POSEDGE K_PROCESS K_PROGRAM
|
||||||
%token K_REMOVAL K_SDFVERSION K_SETUP K_SETUPHOLD K_TEMPERATURE
|
%token K_RECREM K_RECOVERY K_REMOVAL K_SDFVERSION K_SETUP K_SETUPHOLD
|
||||||
%token K_TIMESCALE K_TIMINGCHECK K_VENDOR K_VERSION K_VOLTAGE K_WIDTH
|
%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_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_EQ K_NE K_CEQ K_CNE K_LOGICAL_ONE K_LOGICAL_ZERO
|
||||||
|
%token K_LAND K_LOR
|
||||||
|
|
||||||
%token HCHAR
|
%token HCHAR
|
||||||
%token <string_val> QSTRING IDENTIFIER
|
%token <string_val> QSTRING IDENTIFIER
|
||||||
|
|
@ -70,6 +72,10 @@ char sdf_use_hchar = '.';
|
||||||
|
|
||||||
%type <delval_list> delval_list
|
%type <delval_list> delval_list
|
||||||
|
|
||||||
|
%left K_LOR
|
||||||
|
%left K_LAND
|
||||||
|
%left K_EQ K_NE K_CEQ K_CNE
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
source_file
|
source_file
|
||||||
|
|
@ -261,6 +267,26 @@ del_def
|
||||||
| '(' K_IOPATH error ')'
|
| '(' K_IOPATH error ')'
|
||||||
{ vpi_printf("%s:%d: SDF ERROR: Invalid/malformed IOPATH\n",
|
{ vpi_printf("%s:%d: SDF ERROR: Invalid/malformed IOPATH\n",
|
||||||
sdf_parse_path, @2.first_line); }
|
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_instance port_instance delval_list ')' */
|
||||||
| '(' K_INTERCONNECT port_interconnect port_interconnect delval_list ')'
|
| '(' K_INTERCONNECT port_interconnect port_interconnect delval_list ')'
|
||||||
{ if (sdf_flag_warning) vpi_printf("%s:%d: SDF WARNING: "
|
{ if (sdf_flag_warning) vpi_printf("%s:%d: SDF WARNING: "
|
||||||
|
|
@ -322,6 +348,19 @@ timing_check_condition
|
||||||
| port_interconnect equality_operator scalar_constant
|
| 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
|
equality_operator
|
||||||
: K_EQ
|
: K_EQ
|
||||||
| K_NE
|
| K_NE
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue