mirror of https://github.com/YosysHQ/yosys.git
Merge branch 'implicit_named_connection' of https://github.com/tux3/yosys into tux3-implicit_named_connection
This commit is contained in:
commit
b637b3109d
|
@ -154,7 +154,7 @@ struct specify_rise_fall {
|
|||
%token TOK_INCREMENT TOK_DECREMENT TOK_UNIQUE TOK_PRIORITY
|
||||
|
||||
%type <ast> range range_or_multirange non_opt_range non_opt_multirange range_or_signed_int
|
||||
%type <ast> wire_type expr basic_expr concat_list rvalue lvalue lvalue_concat_list
|
||||
%type <ast> wire_type expr basic_expr concat_list rvalue lvalue lvalue_concat_list named_port
|
||||
%type <string> opt_label opt_sva_label tok_prim_wrapper hierarchical_id
|
||||
%type <boolean> opt_signed opt_property unique_case_attr
|
||||
%type <al> attr case_attr
|
||||
|
@ -1557,6 +1557,15 @@ cell_port:
|
|||
astbuf2->children.push_back(node);
|
||||
delete $3;
|
||||
free_attr($1);
|
||||
} |
|
||||
attr '.' TOK_ID {
|
||||
AstNode *node = new AstNode(AST_ARGUMENT);
|
||||
node->str = *$3;
|
||||
astbuf2->children.push_back(node);
|
||||
node->children.push_back(new AstNode(AST_IDENTIFIER));
|
||||
node->children.back()->str = *$3;
|
||||
delete $3;
|
||||
free_attr($1);
|
||||
};
|
||||
|
||||
always_stmt:
|
||||
|
|
|
@ -17,4 +17,5 @@ if ! which iverilog > /dev/null ; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
exec ${MAKE:-make} -f ../tools/autotest.mk $seed *.v
|
||||
shopt -s nullglob
|
||||
exec ${MAKE:-make} -f ../tools/autotest.mk $seed *.{sv,v}
|
||||
|
|
|
@ -89,6 +89,13 @@ done
|
|||
|
||||
compile_and_run() {
|
||||
exe="$1"; output="$2"; shift 2
|
||||
ext=${1##*.}
|
||||
if [ "$ext" == "sv" ]; then
|
||||
language_gen="-g2012"
|
||||
else
|
||||
language_gen="-g2005"
|
||||
fi
|
||||
|
||||
if $use_modelsim; then
|
||||
altver=$( ls -v /opt/altera/ | grep '^[0-9]' | tail -n1; )
|
||||
/opt/altera/$altver/modelsim_ase/bin/vlib work
|
||||
|
@ -99,7 +106,7 @@ compile_and_run() {
|
|||
/opt/Xilinx/Vivado/$xilver/bin/xvlog $xinclude_opts -d outfile=\"$output\" "$@"
|
||||
/opt/Xilinx/Vivado/$xilver/bin/xelab -R work.testbench
|
||||
else
|
||||
iverilog $include_opts -Doutfile=\"$output\" -s testbench -o "$exe" "$@"
|
||||
iverilog $language_gen $include_opts -Doutfile=\"$output\" -s testbench -o "$exe" "$@"
|
||||
vvp -n "$exe"
|
||||
fi
|
||||
}
|
||||
|
@ -110,7 +117,7 @@ for fn
|
|||
do
|
||||
bn=${fn%.*}
|
||||
ext=${fn##*.}
|
||||
if [[ "$ext" != "v" ]] && [[ "$ext" != "aag" ]] && [[ "$ext" != "aig" ]]; then
|
||||
if [[ "$ext" != "v" ]] && [[ "$ext" != "sv" ]] && [[ "$ext" != "aag" ]] && [[ "$ext" != "aig" ]]; then
|
||||
echo "Invalid argument: $fn" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
@ -123,6 +130,10 @@ do
|
|||
echo -n "Test: $bn "
|
||||
fi
|
||||
|
||||
if [ "$ext" == sv ]; then
|
||||
frontend="$frontend -sv"
|
||||
fi
|
||||
|
||||
rm -f ${bn}.{err,log,skip}
|
||||
mkdir -p ${bn}.out
|
||||
rm -rf ${bn}.out/*
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
// Test implicit port connections
|
||||
module alu (input [2:0] a, input [2:0] b, input cin, output cout, output [2:0] result);
|
||||
assign cout = cin;
|
||||
assign result = a + b;
|
||||
endmodule
|
||||
|
||||
module named_ports(output [2:0] alu_result, output cout);
|
||||
wire [2:0] a = 3'b010, b = 3'b100;
|
||||
wire cin = 1;
|
||||
|
||||
alu alu (
|
||||
.a(a),
|
||||
.b, // Implicit connection is equivalent to .b(b)
|
||||
.cin(), // Explicitely unconnected
|
||||
.cout(cout),
|
||||
.result(alu_result)
|
||||
);
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
read_verilog -sv implicit_ports.sv
|
||||
proc; opt
|
||||
|
||||
flatten
|
||||
select -module named_ports
|
||||
|
||||
sat -verify -prove alu_result 6
|
||||
sat -verify -set-all-undef cout
|
Loading…
Reference in New Issue