summaryrefslogtreecommitdiff
path: root/frontends/ilang
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2013-11-24 17:37:27 +0100
committerClifford Wolf <clifford@clifford.at>2013-11-24 17:37:27 +0100
commit0ef22c76095bcca8ac7cacfc32e4ce6dd552addf (patch)
treebd6b604cf13f8f035af64c249a8204e3b10e35ee /frontends/ilang
parent7eaad2218dab9feec82e8ffe7adbc58463cadb7d (diff)
Added support for signed parameters in ilang
Diffstat (limited to 'frontends/ilang')
-rw-r--r--frontends/ilang/lexer.l1
-rw-r--r--frontends/ilang/parser.y8
2 files changed, 8 insertions, 1 deletions
diff --git a/frontends/ilang/lexer.l b/frontends/ilang/lexer.l
index 287f9dbf..d582d041 100644
--- a/frontends/ilang/lexer.l
+++ b/frontends/ilang/lexer.l
@@ -39,6 +39,7 @@
"module" { return TOK_MODULE; }
"attribute" { return TOK_ATTRIBUTE; }
"parameter" { return TOK_PARAMETER; }
+"signed" { return TOK_SIGNED; }
"wire" { return TOK_WIRE; }
"memory" { return TOK_MEMORY; }
"width" { return TOK_WIDTH; }
diff --git a/frontends/ilang/parser.y b/frontends/ilang/parser.y
index 71c63bc4..54c2280a 100644
--- a/frontends/ilang/parser.y
+++ b/frontends/ilang/parser.y
@@ -54,7 +54,7 @@ using namespace ILANG_FRONTEND;
%token TOK_CELL TOK_CONNECT TOK_SWITCH TOK_CASE TOK_ASSIGN TOK_SYNC
%token TOK_LOW TOK_HIGH TOK_POSEDGE TOK_NEGEDGE TOK_EDGE TOK_ALWAYS TOK_INIT
%token TOK_UPDATE TOK_PROCESS TOK_END TOK_INVALID TOK_EOL TOK_OFFSET
-%token TOK_PARAMETER TOK_ATTRIBUTE TOK_MEMORY TOK_SIZE
+%token TOK_PARAMETER TOK_ATTRIBUTE TOK_MEMORY TOK_SIZE TOK_SIGNED
%type <sigspec> sigspec sigspec_list
%type <integer> sync_type
@@ -189,6 +189,12 @@ cell_body:
free($3);
delete $4;
} |
+ cell_body TOK_PARAMETER TOK_SIGNED TOK_ID constant TOK_EOL {
+ current_cell->parameters[$4] = *$5;
+ current_cell->signed_parameters.insert($4);
+ free($4);
+ delete $5;
+ } |
cell_body TOK_CONNECT TOK_ID sigspec TOK_EOL {
if (current_cell->connections.count($3) != 0)
rtlil_frontend_ilang_yyerror("scope error");