aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/issues/issue7
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/issues/issue7')
-rw-r--r--testsuite/issues/issue7/ref.vhdl13
-rwxr-xr-xtestsuite/issues/issue7/testsuite.sh18
-rw-r--r--testsuite/issues/issue7/vector.vhdl29
3 files changed, 60 insertions, 0 deletions
diff --git a/testsuite/issues/issue7/ref.vhdl b/testsuite/issues/issue7/ref.vhdl
new file mode 100644
index 0000000..63dc225
--- /dev/null
+++ b/testsuite/issues/issue7/ref.vhdl
@@ -0,0 +1,13 @@
+library ieee;
+use ieee.std_logic_1164.all;
+
+entity vector is
+ port (led0, led1, led2, led3, led4, led5, led6, led7: out std_logic);
+end vector;
+
+architecture ref of vector is
+ signal v : std_logic_vector(7 downto 0);
+begin
+ -- It works ok
+ (led7, led6, led5, led4, led3, led2, led1, led0) <= std_logic_vector'("10101010");
+end;
diff --git a/testsuite/issues/issue7/testsuite.sh b/testsuite/issues/issue7/testsuite.sh
new file mode 100755
index 0000000..76cf299
--- /dev/null
+++ b/testsuite/issues/issue7/testsuite.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+run_yosys -Q -q -p "ghdl ref.vhdl -e vector ref; write_verilog ref.v"
+run_yosys -Q -q -p "ghdl ref.vhdl vector.vhdl -e vector synth; write_verilog vector.v"
+
+run_yosys -Q -p '
+ read_verilog ref.v
+ rename vector ref
+
+ read_verilog vector.v
+ equiv_make ref vector equiv
+
+ hierarchy -top equiv
+ equiv_simple
+ equiv_status -assert'
+
+clean
+rm -f *.v
diff --git a/testsuite/issues/issue7/vector.vhdl b/testsuite/issues/issue7/vector.vhdl
new file mode 100644
index 0000000..3ab2e24
--- /dev/null
+++ b/testsuite/issues/issue7/vector.vhdl
@@ -0,0 +1,29 @@
+architecture synth of vector is
+
+signal v : std_logic_vector(7 downto 0);
+
+begin
+
+ -- It works ok
+ --(led7, led6, led5, led4, led3, led2, led1, led0) <= std_logic_vector'("10101010");
+
+ -- It is assigned in reverse order (led7 should be MSB, but it is assigned
+ -- the lsb. led0 should be the lsb, but is assigned as the MSB)
+ v <= std_logic_vector'("10101010");
+ led7 <= v(7);
+ led6 <= v(6);
+ led5 <= v(5);
+ led4 <= v(4);
+ led3 <= v(3);
+ led2 <= v(2);
+ led1 <= v(1);
+ led0 <= v(0);
+
+end synth;
+
+architecture ok of vector is
+ signal v : std_logic_vector(7 downto 0);
+begin
+ -- It works ok
+ (led7, led6, led5, led4, led3, led2, led1, led0) <= std_logic_vector'("10101010");
+end ok;