summaryrefslogtreecommitdiff
path: root/frontends/ilang
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2013-11-21 13:49:00 +0100
committerClifford Wolf <clifford@clifford.at>2013-11-21 13:49:00 +0100
commit09471846c553855c43224ce32d855c46f4df5140 (patch)
tree659fff2b882e2d7c54a5eaf72adeed2328d4ba64 /frontends/ilang
parent84ced2bb8ee2e6498b53ae6cdb77930aa98affbb (diff)
Major improvements in mem2reg and added "init" sync rules
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 2a20f02a..73bc894b 100644
--- a/frontends/ilang/lexer.l
+++ b/frontends/ilang/lexer.l
@@ -60,6 +60,7 @@
"negedge" { return TOK_NEGEDGE; }
"edge" { return TOK_EDGE; }
"always" { return TOK_ALWAYS; }
+"init" { return TOK_INIT; }
"update" { return TOK_UPDATE; }
"process" { return TOK_PROCESS; }
"end" { return TOK_END; }
diff --git a/frontends/ilang/parser.y b/frontends/ilang/parser.y
index b889a998..dc39cf93 100644
--- a/frontends/ilang/parser.y
+++ b/frontends/ilang/parser.y
@@ -52,7 +52,7 @@ using namespace ILANG_FRONTEND;
%token <integer> TOK_INT
%token TOK_MODULE TOK_WIRE TOK_WIDTH TOK_INPUT TOK_OUTPUT TOK_INOUT
%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
+%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_AUTO TOK_MEMORY TOK_SIZE
@@ -279,6 +279,12 @@ sync_list:
rule->signal = RTLIL::SigSpec();
current_process->syncs.push_back(rule);
} update_list |
+ sync_list TOK_SYNC TOK_INIT TOK_EOL {
+ RTLIL::SyncRule *rule = new RTLIL::SyncRule;
+ rule->type = RTLIL::SyncType::STi;
+ rule->signal = RTLIL::SigSpec();
+ current_process->syncs.push_back(rule);
+ } update_list |
/* empty */;
sync_type: