blob: 3d24200c2ba35a6a58be17135a43aaf423c0fbdd [file] [log] [blame]
# -------------------------------------------------------------------------------
# modulevisitor.py
#
# Module definition visitor
#
# Copyright (C) 2013, Shinya Takamaeda-Yamazaki
# License: Apache 2.0
# -------------------------------------------------------------------------------
from __future__ import absolute_import
from __future__ import print_function
import sys
import os
import pyverilog.vparser.parser
from pyverilog.vparser.ast import *
from pyverilog.dataflow.visit import *
class ModuleVisitor(NodeVisitor):
def __init__(self):
self.moduleinfotable = ModuleInfoTable()
def visit_ModuleDef(self, node):
self.moduleinfotable.addDefinition(node.name, node)
self.generic_visit(node)
def visit_Portlist(self, node):
self.moduleinfotable.addPorts(node.ports)
def visit_Input(self, node):
self.moduleinfotable.addSignal(node.name, node)
def visit_Output(self, node):
self.moduleinfotable.addSignal(node.name, node)
def visit_Inout(self, node):
self.moduleinfotable.addSignal(node.name, node)
def visit_Parameter(self, node):
self.moduleinfotable.addConst(node.name, node)
self.moduleinfotable.addParamName(node.name)
def visit_Locaparam(self, node):
self.moduleinfotable.addConst(node.name, node)
# Skip Rule
def visit_Function(self, node):
pass
def visit_Task(self, node):
pass
def visit_Always(self, node):
pass
def visit_Initial(self, node):
pass
def visit_InstanceList(self, node):
pass
def visit_Instance(self, node):
pass
def visit_Pragma(self, node):
pass
# get functions
def get_modulenames(self):
return self.moduleinfotable.get_names()
def get_moduleinfotable(self):
return self.moduleinfotable