From c8e776265c3626bc9aa0320c4e3ac9c20a5c4d22 Mon Sep 17 00:00:00 2001 From: Zachary Snow Date: Sat, 30 Mar 2019 22:15:48 -0400 Subject: [PATCH] fix ports bound to decls inlined from an interface expansion --- src/Convert/Interface.hs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Convert/Interface.hs b/src/Convert/Interface.hs index f3f091c..21c5f65 100644 --- a/src/Convert/Interface.hs +++ b/src/Convert/Interface.hs @@ -53,7 +53,7 @@ convertDescription interfaces (Part extern Module lifetime name ports items) = case t of InterfaceT interfaceName (Just modportName) [] -> tell (Map.empty, Map.singleton ident modportDecls) - where modportDecls = lookupModport Nothing interfaceName modportName + where Just modportDecls = lookupModport Nothing interfaceName modportName _ -> return () collectInterface (Instance part _ ident Nothing _) = if Map.member part interfaces @@ -88,14 +88,16 @@ convertDescription interfaces (Part extern Module lifetime name ports items) = case Map.lookup instanceName instances of Nothing -> [origBinding] Just interfaceName -> - map mapper modportDecls + case modportDecls of + Nothing -> [(portName, Just $ Ident $ instanceName ++ "_" ++ modportName)] + Just decls -> map mapper decls where modportDecls = lookupModport (Just instanceName) interfaceName modportName mapper (_, x, me) = (portName ++ "_" ++ x, me) expandPortBinding other = [other] - lookupModport :: Maybe Identifier -> Identifier -> Identifier -> [ModportDecl] - lookupModport instanceName interfaceName = (Map.!) modportMap + lookupModport :: Maybe Identifier -> Identifier -> Identifier -> Maybe [ModportDecl] + lookupModport instanceName interfaceName = (Map.!?) modportMap where prefix = maybe "" (++ "_") instanceName interfaceItems =