digitalo
Newbie level 6
Hi all!
I have an ASIC design where I want to implement the classical two-flip-flop reset synchronization. The clock is generated on chip, the reset is an external signal. The FFs have asynchronous set/reset inputs.
Of course, I put the synchronization flip-flops in the same clock domain as all other FFs. What this gives me is that the reset sync FFs are also connected at the bottom of the clock tree. Much of the clock period is eaten up by this, and the sync reset signal (the output of the FF) is only generated so late in the clock cycle that it doesn't arrive in time at its destinations (by more than 1 ns).
I'm using Verilog and Cadence velocity/encounter. I'm building a reset tree by using the bufferTreeSynthesis command.
I guess I should force encounter to place the clock inputs of the two sync FFs in parallel to the root of the main clock tree, but I don't know how to do this. Any ideas?
Dirk
---------- Post added at 20:08 ---------- Previous post was at 19:02 ----------
Forget that. It is obviously nonsense... Of course, the arrival time of the clock at the sync FF is effectively subtracted from the arrival time at the reset pin, when the "other end arrival time" is taken into account.
It seems I actually have a problem with bufferTreeSynthesis not taking sensible buffers. When I see a tree of close to minimum size inverters, I shouldn't wonder too much about a too large delay...
Dirk
I have an ASIC design where I want to implement the classical two-flip-flop reset synchronization. The clock is generated on chip, the reset is an external signal. The FFs have asynchronous set/reset inputs.
Of course, I put the synchronization flip-flops in the same clock domain as all other FFs. What this gives me is that the reset sync FFs are also connected at the bottom of the clock tree. Much of the clock period is eaten up by this, and the sync reset signal (the output of the FF) is only generated so late in the clock cycle that it doesn't arrive in time at its destinations (by more than 1 ns).
I'm using Verilog and Cadence velocity/encounter. I'm building a reset tree by using the bufferTreeSynthesis command.
I guess I should force encounter to place the clock inputs of the two sync FFs in parallel to the root of the main clock tree, but I don't know how to do this. Any ideas?
Dirk
---------- Post added at 20:08 ---------- Previous post was at 19:02 ----------
Forget that. It is obviously nonsense... Of course, the arrival time of the clock at the sync FF is effectively subtracted from the arrival time at the reset pin, when the "other end arrival time" is taken into account.
It seems I actually have a problem with bufferTreeSynthesis not taking sensible buffers. When I see a tree of close to minimum size inverters, I shouldn't wonder too much about a too large delay...
Dirk