??? 09/28/07 16:36 Read: times |
#145075 - device dependence Responding to: ???'s previous message |
Jan Waclawek said:
Andy Peters said: Dunno the name (I can ask) - came with the Actel kit he is using.What tools? OK, I have no experience with Actel parts. Andy Peters said:
I haven't seen Brand A or Brand X's tools do bad things to clocks like that, unless I've either run out of global clock buffers or I've explicitly told the tools not to route something on a clock line. It might be related. He mentioned something about exceeded fanouts. Sounds like his clock was on a non-global resource. Andy Peters said:
Bad descriptions can also result in weird branches, but the tools will tell you when it tries to route a clock line on non-global resources. This might quite well have happened too. The whole discussion started from my questions on how device-dependent an implementation of XYZ has to be in VHDL. It seems to me (and him), that unless one follows a certain methodology for a certain brand/family of FPGAs, one can run quickly into problems like these. And, the main trouble is, that he has no time nor money to take courses for that particular chip and tool (which for him was a one-time job anyway, so it simply does not pay out in no means). A handful of resources are device- or family-dependent. The number of global low-skew (clock) lines differs between families, but most designs use only one or two clocks, and I've never seen an instance where a signal global clock failed to route on a global resource. Maybe he put his clock signal on a non-clock input pin? Some families require you to use special pins for clocks. Other family-dependent resources include differential signal on pins (RTFDS), DDR, clock management (DLL/PLL) and some memories which require instantiation instead of inference. In other words, if you can write a behavioral description, from which the tools can infer the logic, even if the tools build the logic out of gates and flops rather than use a special resource, then the code is portable. If you have to pull a part out of a vendor library, it's not. Eventually, he managed to get it working despite of the fact that it is most probably written in an incorrect way. Either written incorrectly or not paying attention to which pins are which. -a |