Hey all, I've managed to synthesize a particular DSP core on Actel's fusion FPGA. I'm using this as a benchmark to assess their suitability for further integration. I'm a bit new when it comes to Actel. Anyway, it seems that when running post-PAR simulation I end up having a periodic pattern of 1ns wide glitches in my output signal every like 4 or slightly less sampling periods. My design is fully synchronous. I have no clue whatsoever about the source of the glitches. I even tried to leave some temporal margin before doing the final output assignment (for thigs to settle down) but it didn't work. Would really appreciate it if anybody can give me an insight on possible problematic sources. I'm yet to run my design in hardware as I'm still waiting for the kit to arrive. Thanks in advance guys. Cheers,
Glitches in post-layout (PAR) simulation
Started by ●October 12, 2006
Reply by ●October 12, 20062006-10-12
Manny wrote:> Anyway, it > seems that when running post-PAR simulation I end up having a periodic > pattern of 1ns wide glitches in my output signal every like 4 or > slightly less sampling periods. My design is fully synchronous.What happens if you slow down the clock? Did static timing pass? -- Mike Treseler
Reply by ●October 12, 20062006-10-12
Actually static timing did pass. As far as I could infer, these glitches are due to long routing propagation delays and only consitute negligible time (1ns) relative to the clock period. So they are pretty much clock independent. In my testbench, I added an explicit intertial delay (2ns) when assigning my output signal. Now everything is ok but I still get warning messages in simulation. Was wondering whether it'll have any noticeable impact when running in hardware? Cheers, -Manny Mike Treseler wrote:> Manny wrote: > > Anyway, it > > seems that when running post-PAR simulation I end up having a periodic > > pattern of 1ns wide glitches in my output signal every like 4 or > > slightly less sampling periods. My design is fully synchronous. > > What happens if you slow down the clock? > Did static timing pass? > > -- Mike Treseler
Reply by ●October 12, 20062006-10-12
Manny wrote:> Actually static timing did pass. As far as I could infer, these > glitches are due to long routing propagation delays and only consitute > negligible time (1ns) relative to the clock period. So they are pretty > much clock independent.Maybe, but it might be worth a sim run to check it. Are the glitches on a registered output? Are all tb and uut clock inputs on exactly the same signal?> In my testbench, I added an explicit intertial > delay (2ns) when assigning my output signal. Now everything is ok but I > still get warning messages in simulation. Was wondering whether it'll > have any noticeable impact when running in hardware?If it does, the problem is confirmed. If it doesn't, nothing is confirmed. -- Mike Treseler
Reply by ●October 12, 20062006-10-12
Manny, you claim that your design is fully synchronous. I take it that all flip-flops are clocked by a common clock. On the signals between these flip-flops you can (and probably will) have glitches as a result of logically combining signals with different routing delays. That is perfectly ok, as long as you manage to met all set-up time requirements. When you use a combinatorially decoded signal as output, you will see the glitch, and you either can live with it, or you need to synchronize the output with a flip-flop. That will definitely eliminate the glictch (at the expense of a one-clock-period delay). peter Alfke, Xilinx Applications. ==================== Manny wrote:> Actually static timing did pass. As far as I could infer, these > glitches are due to long routing propagation delays and only consitute > negligible time (1ns) relative to the clock period. So they are pretty > much clock independent. In my testbench, I added an explicit intertial > delay (2ns) when assigning my output signal. Now everything is ok but I > still get warning messages in simulation. Was wondering whether it'll > have any noticeable impact when running in hardware? > > Cheers, > -Manny > > Mike Treseler wrote: > > Manny wrote: > > > Anyway, it > > > seems that when running post-PAR simulation I end up having a periodic > > > pattern of 1ns wide glitches in my output signal every like 4 or > > > slightly less sampling periods. My design is fully synchronous. > > > > What happens if you slow down the clock? > > Did static timing pass? > > > > -- Mike Treseler
Reply by ●October 12, 20062006-10-12
As a matter of fact, it's a registered output. This is the weird thing about it. There should be not glitches. My testbench is: real_out <= hex2real(filter_out, 16.0)*4.0 after 2 ns; -- *** Test Bench - User Defined Section *** tb : PROCESS BEGIN wait until (reset = '1'); for i IN 0 TO 2091 loop filter_in <= real2hex(filter_in_force(i), 16.0); real_in <= hex2real(filter_in, 16.0); table_in <= filter_in_force(i); table_out <= filter_out_expected(i); wait until (clk_sampling = '0'); end loop; END PROCESS; -- *** End Test Bench - User Defined Section *** filter_out is an already registered output. Is it because I've taken real_out outside of the main testbench process? In my output assignment process, I've defined a temp variable in which I'm storing the glitching signal. I then wait for a handshaking signal before assigning temp to the output (synchronously). Still with all this, 1ns-wide glitches are visible on my output signal. Thanks a lot, -Manny
Reply by ●October 12, 20062006-10-12
On a clocked flip-flop (without any strange asynchronous inputs) there can never be a 1 ns glitch. You have either done something very strange, or you have a defective part (unlikely) Flip-flop outputs do not glitch, if clocked correctly. Could it be that you have a bad clock with glitching edges? Peter Alfke =============== Manny wrote:> As a matter of fact, it's a registered output. This is the weird thing > about it. There should be not glitches. My testbench is: > > real_out <= hex2real(filter_out, 16.0)*4.0 after 2 ns; > -- *** Test Bench - User Defined Section *** > tb : PROCESS > BEGIN > wait until (reset = '1'); > > for i IN 0 TO 2091 loop > filter_in <= real2hex(filter_in_force(i), 16.0); > real_in <= hex2real(filter_in, 16.0); > > table_in <= filter_in_force(i); > table_out <= filter_out_expected(i); > > wait until (clk_sampling = '0'); > end loop; > END PROCESS; > -- *** End Test Bench - User Defined Section *** > > filter_out is an already registered output. Is it because I've taken > real_out outside of the main testbench process? In my output assignment > process, I've defined a temp variable in which I'm storing the > glitching signal. I then wait for a handshaking signal before assigning > temp to the output (synchronously). Still with all this, 1ns-wide > glitches are visible on my output signal. > > Thanks a lot, > -Manny
Reply by ●October 12, 20062006-10-12
Manny wrote:> As a matter of fact, it's a registered output. This is the weird thing > about it. There should be not glitches. My testbench is:Your testbench should be generating a constant clock, say clk_s, and waiting on the same clock *edges* like this: wait until rising_edge(clk_s); Your uut clock should be port mapped to the same clk_s. See the testbench here for details: http://home.comcast.net/~mike_treseler/ -- Mike Treseler
Reply by ●October 12, 20062006-10-12
Ok. I've just checked the netlist 'cause you guys got me worried. Everything is alright. That is, my output port is being clocked by the system's clock properly. The best explanation I could come up with is that individual output port bits have sort of delay mismatch and this is basically what's being manifested as glitches. I presume that after constraining things a bit tighter now, the glitches should be gone. What I meant to ask after all is the following: though post-PAR simulation shows glitches on the output, it doesn't necessarily mean that running design in hardware will fail? isn't it the case? Thanks a lot, -Manny
Reply by ●October 12, 20062006-10-12
Manny, you said that the output was registered. Now you imply that there might be gating between the register and the real output. A registered output will not glitch. A combinatorial output is very likely to glitch. Make up your mind... Peter Alfke ============== Manny wrote:> Ok. I've just checked the netlist 'cause you guys got me worried. > Everything is alright. That is, my output port is being clocked by the > system's clock properly. The best explanation I could come up with is > that individual output port bits have sort of delay mismatch and this > is basically what's being manifested as glitches. I presume that after > constraining things a bit tighter now, the glitches should be gone. > What I meant to ask after all is the following: though post-PAR > simulation shows glitches on the output, it doesn't necessarily mean > that running design in hardware will fail? isn't it the case? > > Thanks a lot, > -Manny






