From c033bff91ebf329f3876d70b49588e1d785fc1f7 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Tue, 16 Jun 2020 07:29:53 +0200 Subject: vhdl psl: add support for equivalence operator. Fix #1371 --- src/psl/psl-qm.adb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/psl/psl-qm.adb') diff --git a/src/psl/psl-qm.adb b/src/psl/psl-qm.adb index 722577018..100900212 100644 --- a/src/psl/psl-qm.adb +++ b/src/psl/psl-qm.adb @@ -275,6 +275,22 @@ package body PSL.QM is return Build_Primes_And (Build_Primes (Get_Left (N), False), Build_Primes (Get_Right (N), True)); end if; + when N_Equiv_Bool => + if not Negate then + -- a <-> b <-> (a && b) || (!a && !b) + return Build_Primes_Or + (Build_Primes_And (Build_Primes (Get_Left (N), False), + Build_Primes (Get_Right (N), False)), + Build_Primes_And (Build_Primes (Get_Left (N), True), + Build_Primes (Get_Right (N), True))); + else + -- !(a <-> b) <-> (!a && b) || (a && !b) + return Build_Primes_Or + (Build_Primes_And (Build_Primes (Get_Left (N), True), + Build_Primes (Get_Right (N), False)), + Build_Primes_And (Build_Primes (Get_Left (N), False), + Build_Primes (Get_Right (N), True))); + end if; when others => Error_Kind ("build_primes", N); end case; -- cgit v1.2.3