FSM in illegal state

Rick,

I am a former ASIC designer. I think I understand this part well. I do have a couple concerns. First I want a reset methodology that is device independent and simulates well for any ASIC or FPGA technology not just specific to Xilinx. Hence, everything that requires reset will need the synchronized reset. I agree most data path does not need reset (except for on some ASIC designs to get the device to pass vectors more easily on the tester).

My second concern is that selective reset is not for everyone. For some this methodology will cause chaos. For a design review with selective reset, this is just one more item that needs to be reviewed in detail.

To me this seems like Chaos**n. Not that it will not work, it just adds more details you need to manage.

This methodology would have to buy me something significant (speed or device size) for me to want to do additional analysis and verification to prove that a circuit designed as above actually works under all conditions.

This sounds like it would address my needs nicely. What do you connect reset to? Do you just leave it floating? What do you do with it in simulation?

If there is something here that would work with XST, Synplicity, and Mentor, without changing the code, this would make me happy. Especially if the only thing I needed to change for each FPGA/ASIC technology is the reset block and where the power-on reset comes from.

On ASICs reset is explicit. On your flow above with Xilinx, I code reset on the register, hook it to ?? or leave it unconnected, and then "magically" it gets connected to GSR.

Is there a datasheet, manual, or appnote you recommend reading on configuration.

Cheers, Jim

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jim Lewis
Director of Training             mailto:Jim@SynthWorks.com
SynthWorks Design Inc.           http://www.SynthWorks.com
1-503-590-4787

Expert VHDL Training for Hardware Design and Verification
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Reply to
Jim Lewis
Loading thread data ...

Let me get back to the fundamental problem: We distribute a (p)reset signal all over the chip. The problem is not the activating edge of this signal, it's the release of (p)reset. No matter how we distribute and phase it (unless there is only a single user clock of relatively low frequency) the trailing edge will not appear at every flip-flop in the same clock period. Whether the (p)reset is asynchronous or synchronous does not matter. I do not see a way to solve this dilemma on the chip-hardware-design level. I suppose the software could be made smart enought to handle this, same as smart designers can design around this. Especially with an elegant construct like SRL16. Peter Alfke

Reply to
Peter Alfke

I don't design huge devices. I also normally need to conserve gates. So I typically am working close to the hardware. This selective reset (as you call it) is just SOP for me. I don't use test vectors (can't you provide don't cares?) and the chaos is only if you don't use it correctly.

But all of this is only to save gates and/or improve speed. Trying to route a chip wide sync reset can end up running into the same timing issues as the async reset if the fanout is too large. I once worked on an Altera design where we had CEs with large fanouts at 80 MHz. The timing analysis software did not work correctly for these signals and we had a he77 of a time getting the chip to actually work on the bench when the software said all was well. Being 80% full didn't help much either. But my point is that chip wide, large fanout signals can be problematic. So I make sure I understand what my chip needs to startup correctly and deal with that. Of course ASIC design requires a whole different level of confidence, but the method is not any different for an ASIC. You just have to make sure you did your homework, just like when you design your FSM in the first place. A small mistake in the FSM can work great in simulation and even on the test bench, but end up failing in the field and lock up the whole thing. I can vouch for that.

Yes, more details, but each one is separate. If you have startup dependancies between your FSMs, that has to be managed even if you have a global sync reset. This does not change that.

Speed is just what it is about. If you have to add another input to every FF on the chip (some of which don't have a lut if they are just delay registers) I can assure you that many of them will end up adding a layer of logic and therefore another increment of delay. If your design is not timing critical, then this is not an issue.

That depends on the target and tools. Many HDL packages will detect the async reset and connect it to the GSR, similar to the way they detect clock signals and use the global clock buffers. Some may still require instantiation of an internal async reset signal source. Check with your tool/chip vendor.

The above style is what I learned to use before anyone was providing any automatic support. You used to need to instantiate the driver for this signal or even provide it at a schematic level at the top of the design. As far as I know all vendors support this, but check with the tool vendor to be sure. Don't they have style guides?

I don't know which app note would be good, but Xilinx has lots of them. Do a doc search on their web site on the line of chips you are using and the word "startup" or "configuration".

--

Rick "rickman" Collins

rick.collins@XYarius.com
Ignore the reply address. To email me use the above address with the XY
removed.

Arius - A Signal Processing Solutions Company
Specializing in DSP and FPGA design      URL http://www.arius.com
4 King Ave                               301-682-7772 Voice
Frederick, MD 21701-3110                 301-682-7666 FAX
Reply to
rickman

Forgive me if I've someone's mentioned it already, but I understand that, in Virtex and later devices, synthesis tools do NOT infer the use of the GSR from the VHDL Reset signal. Instead the user's Reset is routed using general routing resources. (So, timing constraints can be applied to it.) There is of course still an issue if the external signal is truly asynchronous to the clock.

The effect of the GSR on the design's flip-flops is inferred from the behavior of the Reset signal.You can change this using UCF INIT constraints (care!)

The GSR is still used - at configuration time. It is an internal signal driven from the STARTUP block. You can't get rid of it (nor would you want to!) You can connect an external reset to the STARTUP block and hence drive the GSR if you want - you do this by instancing a STARTBUF component. You can also connect an internal signal to the STARTUP block to drive the GSR. If you do neither of these, the GSR is only used at configuration.

I recommend Xilinx's "Simulation and Verification Guide", which discusses all this. It is available with ISE or from:

formatting link

Mike Smith, Doulos Ltd. snipped-for-privacy@myemployer.com

Reply to
Michael Smith

I am puzzled by how that would work. In normal use, the reset would be driven by an internal ROC (in VHDL), or be driven only by the testbench (in Verilog). So what would be the source of the reset signal in the cases you mention? Or are you referring to an asynchronous reset driven from a pin?

--
My real email is akamail.com@dclark (or something like that).
Reply to
Duane Clark

Hi,

An other technique can be use in ASIC design too. Because ASIC have commonly multi-clock domains, some of them can be powered down when not required. Clock gating logic are used to do it, and you have an enable input for this logic; you can design this input to be active only after reset and clocks input stability.

That give you a similar behavior than the FPGA proposal.

JaI

Jim Lewis wrote:

Reply to
Just an Illusion

a cpu "just" needs: * known good value in the pc * address translation and caches disabled

thats a very small amount of state that needs to be right. the rest can be initiated to a known good state by software.

--
	Sander

+++ Out of cheese error +++
Reply to
Sander Vesik

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.