DuplicateGenvar.hs 728 Bytes
Newer Older
1 2 3 4 5 6 7 8
{- sv2v
 - Author: Zachary Snow <zach@zachjs.com>
 -
 - Conversion to remove duplicate genvar declarations
 -}

module Convert.DuplicateGenvar (convert) where

9
import Convert.Scoper
10 11 12 13 14 15 16
import Convert.Traverse
import Language.SystemVerilog.AST

convert :: [AST] -> [AST]
convert = map $ traverseDescriptions traverseDescription

traverseDescription :: Description -> Description
17
traverseDescription = partScoper return traverseModuleItemM return return
18

19
traverseModuleItemM :: ModuleItem -> Scoper () ModuleItem
20
traverseModuleItemM (Genvar x) = do
21
    details <- lookupLocalIdentM x
22 23 24 25
    if details == Nothing
        then insertElem x () >> return (Genvar x)
        else return $ Generate []
traverseModuleItemM item = return item