diff options
author | whitequark <whitequark@whitequark.org> | 2018-12-16 17:50:36 +0000 |
---|---|---|
committer | whitequark <whitequark@whitequark.org> | 2018-12-16 17:53:26 +0000 |
commit | 4effb38e6d318e2e233bdfa9f2e0bb67e4998bf0 (patch) | |
tree | 91dec1783bde8526a1ca3d78e69b580c5259e642 /frontends/ilang | |
parent | ddff75b60ab6b29bbc8425c7f5ac2e6ebbbf32a6 (diff) | |
download | yosys-4effb38e6d318e2e233bdfa9f2e0bb67e4998bf0.tar.gz yosys-4effb38e6d318e2e233bdfa9f2e0bb67e4998bf0.tar.bz2 yosys-4effb38e6d318e2e233bdfa9f2e0bb67e4998bf0.zip |
read_ilang: allow slicing sigspecs.
Diffstat (limited to 'frontends/ilang')
-rw-r--r-- | frontends/ilang/ilang_parser.y | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/frontends/ilang/ilang_parser.y b/frontends/ilang/ilang_parser.y index bfc062fec..b957ecd96 100644 --- a/frontends/ilang/ilang_parser.y +++ b/frontends/ilang/ilang_parser.y @@ -387,17 +387,13 @@ sigspec: $$ = new RTLIL::SigSpec(current_module->wires_[$1]); free($1); } | - TOK_ID '[' TOK_INT ']' { - if (current_module->wires_.count($1) == 0) - rtlil_frontend_ilang_yyerror(stringf("ilang error: wire %s not found", $1).c_str()); - $$ = new RTLIL::SigSpec(current_module->wires_[$1], $3); - free($1); + sigspec '[' TOK_INT ']' { + $$ = new RTLIL::SigSpec($1->extract($3)); + delete $1; } | - TOK_ID '[' TOK_INT ':' TOK_INT ']' { - if (current_module->wires_.count($1) == 0) - rtlil_frontend_ilang_yyerror(stringf("ilang error: wire %s not found", $1).c_str()); - $$ = new RTLIL::SigSpec(current_module->wires_[$1], $5, $3 - $5 + 1); - free($1); + sigspec '[' TOK_INT ':' TOK_INT ']' { + $$ = new RTLIL::SigSpec($1->extract($5, $3 - $5 + 1)); + delete $1; } | '{' sigspec_list '}' { $$ = $2; |