Thanks for the feedback Jack!

On 25/05/17 13:46, Jack Hickish wrote:
Hi Franco,

1) Yes, this is an optimization the tools have performed. If you dig into the Xilinx manuals you can probably find some options / UCF entries to turn off this type of optimization, or at least make it less aggressive. I don't use these enough to know exactly which ones you want, but I'd start with reading about the "KEEP" and "DONT_TOUCH" attributes.

2) In my opinion this probably is detrimental, though you should keep in mind that having more "stuff" in your design is generally unhelpful too.

3) I believe if you set the vacc counters to use either DSP or fabric cores, rather than behavioural HDL (see the "implementation" tab of the counter block) this might prevent the merging of all the blocks. It's not a bad move to make large counters DSPs anyway, if you have lots of them to spare in your design. I might also be inclined to make a pblock for each vacc, with each one containing the brams and dsps associated with that accumulator. Personally, I rarely bother to constrain soft logic.

Floorplanning is a bit of a dark art, and everyone has their own recipe, but if you eventually meet timing and have made notes on your methods the wiki would be a great place for them.

Good luck!

Jack

On Tue, 23 May 2017 at 12:59 Franco <francocuro...@gmail.com <mailto:francocuro...@gmail.com>> wrote:

    Dear Casper community,


    I seek your wisdom once again. I was doing floorplanning to my model
    when I noticed something interesting. My model has 40 vector
    accumulator
    blocks (simple_bram_vacc). When I opened my model in PlanAhead, I
    noticed that all the BRAMs of every vacc were sharing the same single
    counter implementation for addressing, instead of each vacc having its
    independent counter. I understand that these two implementations are
    equivalent because all the counters are equivalent and can be replaced
    by a single one addressing all the BRAMs, but it makes me wonder:

    1)  Why this substitution happened? Was the Xilinx/EDK tools that
    tried
    to do some optimization? Or it has something to do with the
    simple_bram_vacc block implementation?

    2) Isn't this implementation detrimental for routing proposes? I
    mean a
    single counter must address 40 different BRAMs across the FPGA. (My
    critical paths don't involve the counter, but they do involve a lot of
    vacc BRAMs with other components).

    3) What would you recommend me to increase the speed of my model?
    Force
    every vacc to implement their own counter (if that's even possible)?
    Group my BRAMs around or near the lonely counter? Something else?


    As always, many thanks,


    Franco Curotto

    --
    You received this message because you are subscribed to the Google
    Groups "casper@lists.berkeley.edu
    <mailto:casper@lists.berkeley.edu>" group.
    To unsubscribe from this group and stop receiving emails from it,
    send an email to casper+unsubscr...@lists.berkeley.edu
    <mailto:casper%2bunsubscr...@lists.berkeley.edu>.
    To post to this group, send email to casper@lists.berkeley.edu
    <mailto:casper@lists.berkeley.edu>.


--
You received this message because you are subscribed to the Google Groups 
"casper@lists.berkeley.edu" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to casper+unsubscr...@lists.berkeley.edu.
To post to this group, send email to casper@lists.berkeley.edu.

Reply via email to