diff options
author | Clifford Wolf <clifford@clifford.at> | 2013-11-21 13:49:00 +0100 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2013-11-21 13:49:00 +0100 |
commit | 09471846c553855c43224ce32d855c46f4df5140 (patch) | |
tree | 659fff2b882e2d7c54a5eaf72adeed2328d4ba64 /frontends/ilang | |
parent | 84ced2bb8ee2e6498b53ae6cdb77930aa98affbb (diff) | |
download | yosys-09471846c553855c43224ce32d855c46f4df5140.tar.gz yosys-09471846c553855c43224ce32d855c46f4df5140.tar.bz2 yosys-09471846c553855c43224ce32d855c46f4df5140.zip |
Major improvements in mem2reg and added "init" sync rules
Diffstat (limited to 'frontends/ilang')
-rw-r--r-- | frontends/ilang/lexer.l | 1 | ||||
-rw-r--r-- | frontends/ilang/parser.y | 8 |
2 files changed, 8 insertions, 1 deletions
diff --git a/frontends/ilang/lexer.l b/frontends/ilang/lexer.l index 2a20f02a8..73bc894b1 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 b889a9989..dc39cf93f 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: |