def setup_reset(m, reset, *statement, **kwargs): period = kwargs['period'] if 'period' in kwargs else 100 positive = kwargs['positive'] if 'positive' in kwargs else True ret = m.Initial( reset(not positive), statement, vtypes.Delay(period), reset(positive), vtypes.Delay(period), reset(not positive), ) # for verilator if not hasattr(m, 'verilator_reset'): m.verilator_reset = collections.OrderedDict() m.verilator_reset[reset] = (period, positive) if not hasattr(m, 'verilator_reset_statements'): m.verilator_reset_statements = collections.OrderedDict() if reset not in m.verilator_reset_statements: m.verilator_reset_statements[reset] = [] m.verilator_reset_statements[reset].extend(statement) return ret
def setup_reset(m, reset, *statement, **kwargs): period = kwargs['period'] if 'period' in kwargs else 100 ret = m.Initial( reset(0), statement, vtypes.Delay(100), reset(1), vtypes.Delay(100), reset(0), ) return ret
def visit_DelayStatement(self, node): value = self.visit(node.delay) delay = vtypes.Delay(value) return delay
def next_clock(clk): return (vtypes.Event(vtypes.Posedge(clk)), vtypes.Delay(1))