back.pysim: create unique ResetSynchronizer internal domains.
Commit300d47caintroduced the same bug commit779f3ee9was trying to avoid, but now only in the simulator. Since the names in simulator don't have to make any sense, just use DUID to generate them.
This commit is contained in:
parent
300d47ca2e
commit
9c54d0c061
1 changed files with 6 additions and 4 deletions
|
|
@ -10,6 +10,7 @@ from ..tools import flatten
|
|||
from ..hdl.ast import *
|
||||
from ..hdl.ir import *
|
||||
from ..hdl.xfrm import ValueVisitor, StatementVisitor
|
||||
from ..hdl.ast import DUID
|
||||
from ..hdl.dsl import Module
|
||||
from ..hdl.cd import ClockDomain
|
||||
|
||||
|
|
@ -356,12 +357,13 @@ class _StatementCompiler(StatementVisitor):
|
|||
class _SimulatorPlatform:
|
||||
def get_reset_sync(self, reset_sync):
|
||||
m = Module()
|
||||
m.domains += ClockDomain("_reset_sync", async_reset=True)
|
||||
cd = ClockDomain("_reset_sync_{}".format(DUID().duid), async_reset=True)
|
||||
m.domains += cd
|
||||
for i, o in zip((0, *reset_sync._regs), reset_sync._regs):
|
||||
m.d._reset_sync += o.eq(i)
|
||||
m.d[cd.name] += o.eq(i)
|
||||
m.d.comb += [
|
||||
ClockSignal("_reset_sync").eq(ClockSignal(reset_sync.domain)),
|
||||
ResetSignal("_reset_sync").eq(reset_sync.arst),
|
||||
ClockSignal(cd.name).eq(ClockSignal(reset_sync.domain)),
|
||||
ResetSignal(cd.name).eq(reset_sync.arst),
|
||||
ResetSignal(reset_sync.domain).eq(reset_sync._regs[-1])
|
||||
]
|
||||
return m
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue