mirror of https://github.com/YosysHQ/yosys.git
Merge pull request #2045 from YosysHQ/eddie/fix2042
verilog: error if no direction given for task arguments, default to input in SV mode
This commit is contained in:
commit
5bcde7ccc3
1
Makefile
1
Makefile
|
@ -780,6 +780,7 @@ test: $(TARGETS) $(EXTRA_TARGETS)
|
|||
+cd tests/arch/intel_alm && bash run-test.sh $(SEEDOPT)
|
||||
+cd tests/rpc && bash run-test.sh
|
||||
+cd tests/memfile && bash run-test.sh
|
||||
+cd tests/verilog && bash run-test.sh
|
||||
@echo ""
|
||||
@echo " Passed \"make test\"."
|
||||
@echo ""
|
||||
|
|
|
@ -853,7 +853,19 @@ task_func_port:
|
|||
}
|
||||
if (astbuf2 && astbuf2->children.size() != 2)
|
||||
frontend_verilog_yyerror("task/function argument range must be of the form: [<expr>:<expr>], [<expr>+:<expr>], or [<expr>-:<expr>]");
|
||||
} wire_name | wire_name;
|
||||
} wire_name |
|
||||
{
|
||||
if (!astbuf1) {
|
||||
if (!sv_mode)
|
||||
frontend_verilog_yyerror("task/function argument direction missing");
|
||||
albuf = new dict<IdString, AstNode*>;
|
||||
astbuf1 = new AstNode(AST_WIRE);
|
||||
current_wire_rand = false;
|
||||
current_wire_const = false;
|
||||
astbuf1->is_input = true;
|
||||
astbuf2 = NULL;
|
||||
}
|
||||
} wire_name;
|
||||
|
||||
task_func_body:
|
||||
task_func_body behavioral_stmt |
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
/*.log
|
||||
/*.out
|
||||
/run-test.mk
|
|
@ -0,0 +1,59 @@
|
|||
read_verilog -sv <<EOT
|
||||
module Task_Test_Top
|
||||
(
|
||||
input a,
|
||||
output b
|
||||
);
|
||||
|
||||
task SomeTaskName(a);
|
||||
b = ~a;
|
||||
endtask
|
||||
|
||||
always @*
|
||||
SomeTaskName(a);
|
||||
|
||||
assert property (b == ~a);
|
||||
|
||||
endmodule
|
||||
EOT
|
||||
proc
|
||||
sat -verify -prove-asserts
|
||||
|
||||
|
||||
design -reset
|
||||
read_verilog -sv <<EOT
|
||||
module Task_Test_Top
|
||||
(
|
||||
input a,
|
||||
output b, c
|
||||
);
|
||||
|
||||
task SomeTaskName(x, output y, z);
|
||||
y = ~x;
|
||||
z = x;
|
||||
endtask
|
||||
|
||||
always @*
|
||||
SomeTaskName(a, b, c);
|
||||
|
||||
assert property (b == ~a);
|
||||
assert property (c == a);
|
||||
|
||||
endmodule
|
||||
EOT
|
||||
proc
|
||||
sat -verify -prove-asserts
|
||||
|
||||
|
||||
design -reset
|
||||
logger -expect error "syntax error, unexpected TOK_ENDTASK, expecting ';'" 1
|
||||
read_verilog -sv <<EOT
|
||||
module Task_Test_Top
|
||||
(
|
||||
);
|
||||
|
||||
task SomeTaskName(a)
|
||||
endtask
|
||||
|
||||
endmodule
|
||||
EOT
|
|
@ -0,0 +1,11 @@
|
|||
logger -expect error "task/function argument direction missing" 1
|
||||
read_verilog <<EOT
|
||||
module Task_Test_Top
|
||||
(
|
||||
);
|
||||
|
||||
task SomeTaskName(a)
|
||||
endtask
|
||||
|
||||
endmodule
|
||||
EOT
|
|
@ -0,0 +1,20 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
{
|
||||
echo "all::"
|
||||
for x in *.ys; do
|
||||
echo "all:: run-$x"
|
||||
echo "run-$x:"
|
||||
echo " @echo 'Running $x..'"
|
||||
echo " @../../yosys -ql ${x%.ys}.log $x"
|
||||
done
|
||||
for s in *.sh; do
|
||||
if [ "$s" != "run-test.sh" ]; then
|
||||
echo "all:: run-$s"
|
||||
echo "run-$s:"
|
||||
echo " @echo 'Running $s..'"
|
||||
echo " @bash $s"
|
||||
fi
|
||||
done
|
||||
} > run-test.mk
|
||||
exec ${MAKE:-make} -f run-test.mk
|
Loading…
Reference in New Issue