aboutsummaryrefslogtreecommitdiffstats
path: root/frontends/ilang
diff options
context:
space:
mode:
authorwhitequark <whitequark@whitequark.org>2018-12-16 17:50:36 +0000
committerwhitequark <whitequark@whitequark.org>2018-12-16 17:53:26 +0000
commit4effb38e6d318e2e233bdfa9f2e0bb67e4998bf0 (patch)
tree91dec1783bde8526a1ca3d78e69b580c5259e642 /frontends/ilang
parentddff75b60ab6b29bbc8425c7f5ac2e6ebbbf32a6 (diff)
downloadyosys-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.y16
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;