mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-25 18:15:34 +00:00
Added support for SystemVerilog packages with localparam definitions
This commit is contained in:
parent
3380281e15
commit
178ff3e7f6
7 changed files with 53 additions and 1 deletions
|
@ -102,6 +102,7 @@ static void free_attr(std::map<std::string, AstNode*> *al)
|
|||
%token <string> TOK_STRING TOK_ID TOK_CONST TOK_REALVAL TOK_PRIMITIVE
|
||||
%token ATTR_BEGIN ATTR_END DEFATTR_BEGIN DEFATTR_END
|
||||
%token TOK_MODULE TOK_ENDMODULE TOK_PARAMETER TOK_LOCALPARAM TOK_DEFPARAM
|
||||
%token TOK_PACKAGE TOK_ENDPACKAGE TOK_PACKAGESEP
|
||||
%token TOK_INPUT TOK_OUTPUT TOK_INOUT TOK_WIRE TOK_REG
|
||||
%token TOK_INTEGER TOK_SIGNED TOK_ASSIGN TOK_ALWAYS TOK_INITIAL
|
||||
%token TOK_BEGIN TOK_END TOK_IF TOK_ELSE TOK_FOR TOK_WHILE TOK_REPEAT
|
||||
|
@ -155,6 +156,7 @@ design:
|
|||
task_func_decl design |
|
||||
param_decl design |
|
||||
localparam_decl design |
|
||||
package design |
|
||||
/* empty */;
|
||||
|
||||
attr:
|
||||
|
@ -212,6 +214,14 @@ hierarchical_id:
|
|||
TOK_ID {
|
||||
$$ = $1;
|
||||
} |
|
||||
hierarchical_id TOK_PACKAGESEP TOK_ID {
|
||||
if ($3->substr(0, 1) == "\\")
|
||||
*$1 += "::" + $3->substr(1);
|
||||
else
|
||||
*$1 += "::" + *$3;
|
||||
delete $3;
|
||||
$$ = $1;
|
||||
} |
|
||||
hierarchical_id '.' TOK_ID {
|
||||
if ($3->substr(0, 1) == "\\")
|
||||
*$1 += "." + $3->substr(1);
|
||||
|
@ -311,6 +321,25 @@ module_arg:
|
|||
do_not_require_port_stubs = true;
|
||||
};
|
||||
|
||||
package:
|
||||
attr TOK_PACKAGE TOK_ID {
|
||||
AstNode *mod = new AstNode(AST_PACKAGE);
|
||||
ast_stack.back()->children.push_back(mod);
|
||||
ast_stack.push_back(mod);
|
||||
current_ast_mod = mod;
|
||||
mod->str = *$3;
|
||||
append_attr(mod, $1);
|
||||
} ';' package_body TOK_ENDPACKAGE {
|
||||
ast_stack.pop_back();
|
||||
current_ast_mod = NULL;
|
||||
};
|
||||
|
||||
package_body:
|
||||
package_body package_body_stmt |;
|
||||
|
||||
package_body_stmt:
|
||||
localparam_decl;
|
||||
|
||||
non_opt_delay:
|
||||
'#' '(' expr ')' { delete $3; } |
|
||||
'#' '(' expr ':' expr ':' expr ')' { delete $3; delete $5; delete $7; };
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue