diff options
-rw-r--r-- | src/grt/grt-signals.adb | 1 | ||||
-rw-r--r-- | src/grt/grt-signals.ads | 4 | ||||
-rw-r--r-- | src/grt/grt-types.ads | 4 | ||||
-rw-r--r-- | src/vhdl/sem.adb | 6 |
4 files changed, 10 insertions, 5 deletions
diff --git a/src/grt/grt-signals.adb b/src/grt/grt-signals.adb index 1a4454a..226e7f8 100644 --- a/src/grt/grt-signals.adb +++ b/src/grt/grt-signals.adb @@ -2620,6 +2620,7 @@ package body Grt.Signals is (Resolv.Resolv_Proc = To_Resolver_Acc (Ieee_Std_Logic_1164_Resolved_Resolv_Ptr)) and then Sig.S.Nbr_Drivers + Sig.Nbr_Ports <= 1 + and then Sig.Sig_Kind = Kind_Signal_No then -- Optimization: remove resolver if there is at most one -- source. diff --git a/src/grt/grt-signals.ads b/src/grt/grt-signals.ads index 0b69e60..8461e5e 100644 --- a/src/grt/grt-signals.ads +++ b/src/grt/grt-signals.ads @@ -33,6 +33,10 @@ pragma Elaborate_All (Grt.Table); package Grt.Signals is pragma Suppress (All_Checks); + -- Kind of a signal. + type Kind_Signal_Type is + (Kind_Signal_No, Kind_Signal_Register, Kind_Signal_Bus); + -- Kind of transaction. type Transaction_Kind is ( diff --git a/src/grt/grt-types.ads b/src/grt/grt-types.ads index fed8225..c0b3c3b 100644 --- a/src/grt/grt-types.ads +++ b/src/grt/grt-types.ads @@ -301,10 +301,6 @@ package Grt.Types is subtype Mode_Signal_Forward is Mode_Signal_Type range Mode_Stable .. Mode_Delayed; - -- Kind of a signal. - type Kind_Signal_Type is - (Kind_Signal_No, Kind_Signal_Register, Kind_Signal_Bus); - -- Note: we could use system.storage_elements, but unfortunatly, -- this doesn't work with pragma no_run_time (gnat 3.15p). type Integer_Address is mod Memory_Size; diff --git a/src/vhdl/sem.adb b/src/vhdl/sem.adb index 28cef78..1380568 100644 --- a/src/vhdl/sem.adb +++ b/src/vhdl/sem.adb @@ -337,7 +337,11 @@ package body Sem is -- If the formal can have sources and is guarded, but the actual is -- not guarded (or has not the same kind of guard), signals cannot -- be collapsed. - if Get_Signal_Kind (Formal_Base) /= Get_Signal_Kind (Actual_Base) then + if (Get_Guarded_Signal_Flag (Formal_Base) + /= Get_Guarded_Signal_Flag (Actual_Base)) + or else (Get_Signal_Kind (Formal_Base) + /= Get_Signal_Kind (Actual_Base)) + then return False; end if; |