aboutsummaryrefslogtreecommitdiffstats
path: root/tests/opt
diff options
context:
space:
mode:
authorMarcelina Koƛcielnicka <mwk@0x04.net>2021-07-27 15:24:48 +0200
committerMarcelina Koƛcielnicka <mwk@0x04.net>2021-07-27 20:44:26 +0200
commit436d42c00c2bf1b2eaf84ada388d8aaab65da086 (patch)
treeddef55a459277faab091276d37726cc94c0e46f0 /tests/opt
parent9600f20be887b707f6d5d3f74dec58b336e2464e (diff)
downloadyosys-436d42c00c2bf1b2eaf84ada388d8aaab65da086.tar.gz
yosys-436d42c00c2bf1b2eaf84ada388d8aaab65da086.tar.bz2
yosys-436d42c00c2bf1b2eaf84ada388d8aaab65da086.zip
opt_expr: Propagate constants to port connections.
This adds one simple piece of functionality to opt_expr: when a cell port is connected to a fully-constant signal (as determined by sigmap), the port is reconnected directly to the constant value. This is just enough optimization to fix the "non-constant $meminit input" problem without requiring a full opt_clean or a separate pass.
Diffstat (limited to 'tests/opt')
-rw-r--r--tests/opt/opt_expr_constconn.v8
-rw-r--r--tests/opt/opt_expr_constconn.ys7
2 files changed, 15 insertions, 0 deletions
diff --git a/tests/opt/opt_expr_constconn.v b/tests/opt/opt_expr_constconn.v
new file mode 100644
index 000000000..d18b120e3
--- /dev/null
+++ b/tests/opt/opt_expr_constconn.v
@@ -0,0 +1,8 @@
+module top(...);
+
+input [7:0] A;
+output [7:0] B;
+wire [7:0] C = 3;
+assign B = A + C;
+
+endmodule
diff --git a/tests/opt/opt_expr_constconn.ys b/tests/opt/opt_expr_constconn.ys
new file mode 100644
index 000000000..9dd848a4b
--- /dev/null
+++ b/tests/opt/opt_expr_constconn.ys
@@ -0,0 +1,7 @@
+read_verilog opt_expr_constconn.v
+select -assert-count 1 t:$add
+select -assert-count 1 t:$add %ci w:C %i
+equiv_opt -assert opt_expr
+design -load postopt
+select -assert-count 1 t:$add
+select -assert-count 0 t:$add %ci w:C %i