X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=FlattenTypes.hs;h=5c95632859d22fc30a8752a28661ad6083eaf224;hb=72a84356f5507b73d4d5f84844aac9334ee17795;hp=e77a8aaf3c5e01841f91fa169a5ab205585f322b;hpb=20fbdf46508998bd11da03f3abd6e8725508b0a1;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git diff --git a/FlattenTypes.hs b/FlattenTypes.hs index e77a8aa..5c95632 100644 --- a/FlattenTypes.hs +++ b/FlattenTypes.hs @@ -75,9 +75,17 @@ data CondDef sigid = CondDef { condRes :: sigid } deriving (Show, Eq) +-- | How is a given signal used in the resulting VHDL? +data SigUse = + SigPort -- | Use as a port + | SigInternal -- | Use as an internal signal + | SigState -- | Use as an internal state + | SigSubState -- | Do not use, state variable is used in a subcircuit + -- | Information on a signal definition data SignalInfo = SignalInfo { sigName :: Maybe String, + sigUse :: SigUse, sigTy :: Type.Type } @@ -121,10 +129,10 @@ addCondDef c = do State.put (apps, c:conds, sigs, n) -- | Generates a new signal id, which is unique within the current flattening. -genSignalId :: Type.Type -> FlattenState UnnamedSignal -genSignalId ty = do +genSignalId :: SigUse -> Type.Type -> FlattenState UnnamedSignal +genSignalId use ty = do (apps, conds, sigs, n) <- State.get -- Generate a new numbered but unnamed signal - let s = (n, SignalInfo Nothing ty) + let s = (n, SignalInfo Nothing use ty) State.put (apps, conds, s:sigs, n+1) return n