Prev: CPLD + MCU SoC from Cypress, free samples too!
Next: Serial interface between PC and FPGA using matlab
From: Kastil Jan on 6 Nov 2009 03:02 Hi, I do not know if I am an advanced user, but I have a few experiance with floorplanning tool. I tried use a PlanAhead tool to meet timing of the design in Virtex5 110 and failed misserably. But during this time I gained a few experiance, some of them comes from reading I did, others I discovered by my own. First, you should floorplan complete and optimized design. Floorplanning is a complex issue, such as optimalization and it is much more harder to do both at the time. Design should be modular. Meaning that if you have a design, where every unit communicates with every other on the high frequency (which is exactly what we had). Than you will not be able to floorplan very effectively (you can at least place some critical components). If you have such modules, that the problems are inside the module, than your floorplanning will help. PlanAhead also allows you to run map and par only on the problematic module, which can decrease time of the work. Be carefull with the LOC (placing of the part). Once I tried to LOC all components of the component in the design that was placed to ensure repeatibility of the map and par. The result was that map failed saying that LOC constrains are incorect. A few times I met a strange situation, where correct LOC (on LUT, register, ..) made the path worse. Let me explain: There was a time critical path. After some time, map a par found the solution for this path that met the timing. So I LOC its parts in the design and run map and par. I was surprised, that the path did not met the timing again. So LOCking of the critical path is surely not a right way. This is my personal experience from the ISE10.1 and ISE11.2. If you want to decrease time of the implementation run, you could look at the guided map or partitions. Jan On Thu, 5 Nov 2009, Steve Ravet wrote: > Do any of you advanced users ever use the floorplanning tools to do > placement? I'm not talking about placing clock buffers or other individual > items, I'm talking about ASIC style floorplanning for units and sub-units. > I've asked AE's about that and the response is always to let the tool do > placement. So I'm asking experts: Do you ever floorplan, and if so why? > To speed up map? To help with timing? Thanks for any insight, > > --steve > > >
From: Ben Jones on 6 Nov 2009 08:25 On Nov 5, 7:56 pm, "Steve Ravet" <steve.ra...(a)arm.com> wrote: > Do any of you advanced users ever use the floorplanning tools to do > placement? I'm not talking about placing clock buffers or other individual > items, I'm talking about ASIC style floorplanning for units and sub-units.. > I've asked AE's about that and the response is always to let the tool do > placement. So I'm asking experts: Do you ever floorplan, and if so why? > To speed up map? To help with timing? Thanks for any insight, > > --steve I think floorplanning is undersupported in most current FPGA tools (certainly in the Xilinx tools), but sometimes it's a necessity. In fact, I'd say that anyone doing a non-trivial FPGA design (and is there any other kind?) should at least be aware of the impact that placement decisions will have on their design. And this goes double for anyone using hard blocks such as DSPs and processors and EMACs and so on. In the end, your design is not being turned into software, but hardware - a real, physical thing that has a real physical layout. As you point out, ASIC people fully realise that layout is important (and hard). I fail to see why FPGA design is really that different. To my mind there are two aspects to placement/floorplanning. One is the "low-level tweaking" aspect, where you might have to fiddle around making sure that a few critical elements are placed properly relative to one another so that timing isn't compromised. Or you might be trying to do a very dense design, with no wasted space, and use placement constraints to force certain logic functions to share a resource. This sort of placement is fiddly, time-consuming, error- prone, and often needs to be re-done when a design undergoes changes - and worse, you can easily make your design bigger and/or slower if you're not 100% sure of what you're doing. This is the placement job that you'd really hope the FPGA tools would do well, because it seems ideally suited to automation based on the software's intimate knowledge of the device architecture and design rules. It's similar to the argument for high-level languages versus assembly language in the software domain. Most of the time, the tools do an OK job of the low-level mapping. When they don't, it's often very hard to persuade them to do it differently. This is often a source of great frustration if you're trying to push the boundaries of what's possible in a device. I personally think there are three occasions on which this sort of dabbling-in-black-magic is warranted: 1) When designing a common component that will be re-used often within a design, and within other designs. So the pain can be amortized over many projects. 2) When the component in question is the "key" to the success of a particular design. The commercial viability of your product might hinge on the ability to do (say) a very fast pipelined 72-bit addition operation. So the pain can be justified. 3) When you've finished your design and it doesn't meet timing because the tools are misbehaving. In this case, the pain can be partially mitigated by ranting about your problems on usenet. :-) But there's a whole other kind of placement, too, which is device- level floorplanning. That is, rather than being concerned about the details of which LUT goes where, you're thinking about whether the DDR controller should go on the left- or the right-hand side of the chip. Taking into account the locations of other devices on your PCB, you must decide which Ethernet MAC to use. Or which PowerPC, and then, where to put all its peripherals. Or you have two filter blocks that use DSP slices, and you want to ensure that they both take them from the same column. Or you have two blocks with very complex internal routing and you want to make sure the tools keep their areas completely separate to improve runtime and avoid congestion. This is the sort of problem that I think is very hard to solve automatically. It's a bit like town planning. You wouldn't just say "I need 10,000 houses, four schools, 50 shops and restaurants and a hospital" and expect some piece of software to come up with an optimal solution. You at least need to give it some constraints. Some idea of the geography. Some idea of what ought to be near to what. Tools like planahead are supposed to help with this sort of thing, but there are plenty of other ways. For example, I have seen a design go from <130MHz to >200MHz simply from adding a few area-group constraints to guide the placement algorithm into making sensible decisions. Usually you don't get much run-time improvement out of the mapper - if anything, constraint processing tends to slow the tools down - but that's usually re-couped in the routing stage, because the problem the router has to solve is far better defined when the functional sub-blocks are nicely separated out, rather than tangled together in spahetti. Depending on what you're trying to achieve with an FPGA, you might never ever need to touch a placement constraint at all. But as devices get bigger and bigger I think more and more users are going to hit the limits of the tools, and will start to require an awareness of the true physical nature of their designs in order to complete them successfully. When that happens, I'm also hoping we'll see an improvement in the actual mechanics of influencing placement decisions - both low-level and high-level - within the various design suites. Cheers, -Ben- (It seems that, thanks to quantitative easing, my $0.02 is now trading at around $0.22.)
From: rickman on 6 Nov 2009 11:21 On Nov 6, 1:41 am, Kim Enkovaara <kim.enkova...(a)iki.fi> wrote: > rickman wrote: > > I can't say any of this for certain since I have not needed to > > floorplan for almost a decade and I am sure the tools are better. I > > believe at least Xilinx has some incremental compile feature which > > should help to minimize the extent of changes due to a design change. > > That would help, but it still remains a messy proposition. > > My biggest problem is that the Xilinx placer is horribly bad. It seems > to place everything at random and then just hopes that it might be > able to meet the timing and route the mess. Of course if you have > time just run all the different seeds for the placement, one of them > might be good enough guess ;) Manual placement of the memories usually > helps a lot. > > My own feeling is that the Altera placer is better than the Xilinx > altough it also has some problems with the different size memories > (M144k vs M9k etc.). > > Fortunately there are physical synthesis tools for FPGAs from > 3rd parties, they at least make reasonable placement for the FPGA > tools to start their work. I wasn't aware that any of the third party tools did *any* placement. I thought they just produced a net list of the primitives and let the Xilinx place and route tools do all of that. Am I mistaken? I don't disagree that the placer is nowhere near optimal. But I have done enough hand placement to realize that unless you have a very regular design that you can clearly see the optimal placement, it can be very hard to do a good job yourself. Of course you can spot the bad placements the tool does, but it is very often true that if you optimize one thing, you will mess up something else. Of course, the point is that you optimize the parts that have trouble meeting timing and allow the portions with lots of slack to get worse. For the tool to know which parts these are would require iterating through placement *and* routing which I don't think they do. Am I wrong about that? I guess that is where the multiple seeds come in. Don't mention Altera to me. Although their current tool might be a lot better, I had to do a project using Max Plus II and it totally sucked! Not only was it not so good at the P&R thing, it would claim a design was passing timing analysis when it would fail on the bench. We spent tons of time trying to get that blivet* to work using cold spray and a chip heater. * A blivet is 10 pounds of $#!? in a 5 pound bag or in this case an FPGA using 90% of the logic. Rick
From: Steve Ravet on 6 Nov 2009 15:54 Synplify Premier includes physical synthesis for Xilinx, which does graph based placement while synthesizing. It knows about all the routing resources and can place logic accordingly. It forwards a boatload of location constraints to the placer. I evaluated it a couple years ago and it didn't work, there was some lack of communication between synthesis and ISE. I'll be using it again in a couple months, this time on big v6 parts. Thanks for the comments everyone. My FPGA work is mainly ASIC emulation, so no IP blocks, no particular PCB concerns (most FPGA I/O is connected to other FPGAs). I just know that the ASIC implementation team spends a lot of time floorplanning, and I was wondering if there was any benefit to applying that to the FPGA. Someone else mentioned the smartguide option... I use this all the time. It cut P&R runtime from 18 hours down to 6 on a 92% full V5 LX330 design. When I get a design that routes successfully and has good timing I keep it and use it to guide the next placement. regards, --steve "rickman" <gnuarm(a)gmail.com> wrote in message news:a53d433a-97a2-4d7e-a9c2- I wasn't aware that any of the third party tools did *any* placement. I thought they just produced a net list of the primitives and let the Xilinx place and route tools do all of that. Am I mistaken? Rick
From: John Adair on 7 Nov 2009 02:45 I'd pretty much agree with other comments and say I use it as a last resort tool. The problems when parts are changed make it a problem. That all said we used floorplanning in conjunction with FPGA Editor some years ago to achieve our 10Gbit CRC32 IP in relative slow Virtex- II fabric. That particular design has 3 levels of LUTs in some of it and had to run at 300Mhz+. We got down to identifying individual inputs of the LUT to use in interconnecting logic in some cases to make go quick enough. A long job but in the end successful. I would always play with synthesis, map and P&R options before using floorplanning for these reasons. I would also look at the worst areas in the design too and see if the design could change to sort a timing issue that way. Using the multiple P&R seeds is often worth one or two nS. John Adair Enterpoint Ltd. On 5 Nov, 19:56, "Steve Ravet" <steve.ra...(a)arm.com> wrote: > Do any of you advanced users ever use the floorplanning tools to do > placement? I'm not talking about placing clock buffers or other individual > items, I'm talking about ASIC style floorplanning for units and sub-units.. > I've asked AE's about that and the response is always to let the tool do > placement. So I'm asking experts: Do you ever floorplan, and if so why? > To speed up map? To help with timing? Thanks for any insight, > > --steve
First
|
Prev
|
Next
|
Last
Pages: 1 2 3 Prev: CPLD + MCU SoC from Cypress, free samples too! Next: Serial interface between PC and FPGA using matlab |