From 1d314faf975a1cba77e8292d454cfdd2b4ed90da Mon Sep 17 00:00:00 2001 From: Stephen Williams Date: Sat, 2 Feb 2013 17:38:24 -0800 Subject: [PATCH] bool .net8 objects? This is rather a pointless sort of thing, but it does turn from from time to time, for example when constant literals (with no x or z bits) are given strengths. So handle .net8/2s and .net8/2u the same as .net8.s and .net8 objects. --- vvp/lexor.lex | 2 ++ vvp/parse.y | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/vvp/lexor.lex b/vvp/lexor.lex index 9cfd7880f..a2d8cbf8f 100644 --- a/vvp/lexor.lex +++ b/vvp/lexor.lex @@ -165,6 +165,8 @@ static char* strdupnew(char const *str) ".net/2s" { return K_NET_2S; } ".net/2u" { return K_NET_2U; } ".net8" { return K_NET8; } +".net8/2s" { return K_NET8_2S; } +".net8/2u" { return K_NET8_2U; } ".net8/s" { return K_NET8_S; } ".net/real" { return K_NET_R; } ".net/s" { return K_NET_S; } diff --git a/vvp/parse.y b/vvp/parse.y index a012ddcc2..3d02533a3 100644 --- a/vvp/parse.y +++ b/vvp/parse.y @@ -85,7 +85,8 @@ static struct __vpiModPath*modpath_dst = 0; %token K_CONCAT K_CONCAT8 K_DEBUG K_DELAY K_DFF %token K_ENUM2 K_ENUM2_S K_ENUM4 K_ENUM4_S K_EVENT K_EVENT_OR %token K_EXPORT K_EXTEND_S K_FUNCTOR K_IMPORT K_ISLAND K_MODPATH -%token K_NET K_NET_S K_NET_R K_NET_2S K_NET_2U K_NET8 K_NET8_S +%token K_NET K_NET_S K_NET_R K_NET_2S K_NET_2U +%token K_NET8 K_NET8_2S K_NET8_2U K_NET8_S %token K_PARAM_STR K_PARAM_L K_PARAM_REAL K_PART K_PART_PV %token K_PART_V K_PART_V_S K_PORT K_PORT_INFO K_PV K_REDUCE_AND K_REDUCE_OR K_REDUCE_XOR %token K_REDUCE_NAND K_REDUCE_NOR K_REDUCE_XNOR K_REPEAT @@ -751,10 +752,18 @@ statement ',' symbols_net ';' { compile_net($1, $4, $6, $7, -vpiLogicVar, false, $3, $9.cnt, $9.vect); } + | T_LABEL K_NET8_2U local_flag T_STRING ',' signed_t_number signed_t_number + ',' symbols_net ';' + { compile_net($1, $4, $6, $7, -vpiLogicVar, false, $3, $9.cnt, $9.vect); } + | T_LABEL K_NET8_S local_flag T_STRING ',' signed_t_number signed_t_number ',' symbols_net ';' { compile_net($1, $4, $6, $7, -vpiLogicVar, true, $3, $9.cnt, $9.vect); } + | T_LABEL K_NET8_2S local_flag T_STRING ',' signed_t_number signed_t_number + ',' symbols_net ';' + { compile_net($1, $4, $6, $7, -vpiLogicVar, true, $3, $9.cnt, $9.vect); } + | T_LABEL K_NET_R local_flag T_STRING ',' signed_t_number signed_t_number ',' symbols_net ';' { compile_net_real($1, $4, $6, $7, $3, $9.cnt, $9.vect); }