UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Adventurer
Adventurer
7,026 Views
Registered: ‎04-11-2012

Many small AXI slaves vs. Few large slaves

I'm using a Spartan6 with ISE and XPS/EDK.  It's an AXI design that has a large number of peripherals (mostly custom IP) on AXI4LITE.

 

Currently each of the custom peripherals has its own separate AXI4LITE bus interface (using the axi_lite_ipif core)  and separate software driver libraries.  This seems good for hierarchical design and reusability, but I'm not sure if it's the ideal in terms of FPGA performance.

 

Another option that I've considered is to make "one peripheral to rule them all" which either maps AXI4LITE to Wishbone or similar or just directly ties up all the "user_logic"s of my existing peripherals and presents a unified front to the EDK.  This seems bad for hierarchy and complex to code but might be better for performance?

 

Is one of these approaches better than the other for the FPGA design?  In particular here I'm referring to the area required by the design and the ease of meeting timing.  As it is the current separate-peripherals design takes about ten hours just to build, and can at times be a pain to get to pass timing, and I'm wondering if making the effort to merge the peripherals would make this better, worse, or not really change much.  (I'm open to ideas on restructuring the internals but the ship has sailed on changing pin assignments.)

0 Kudos
3 Replies
Adventurer
Adventurer
7,012 Views
Registered: ‎04-11-2012

Re: Many small AXI slaves vs. Few large slaves

Related question is whether it's better to design a core with 16 inputs and 8 registers, and then instantiate 2 of these at the top level, or to make a core with 32 inputs and 16 registers and instantiate only one. Or whether that doesn't really make any difference.  (Again assume for the purposes of discussion that the two separate cores are "better" from a design aesthetic perspective; the question here is one of compile/timing/area performance.)

0 Kudos
Teacher muzaffer
Teacher
6,890 Views
Registered: ‎03-31-2012

Re: Many small AXI slaves vs. Few large slaves

the number of registers would stay the same but you would have two smaller decoders compared to a larger decoder and you would have 2x state machine logic for axi protocol management. At this level it's probably a judgment call and at instantiation of 2 blocks it probably doesn't matter much. With the smaller blocks your C code can be probably better partitioned and multiple threads don't have to manage resource usage.
- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.
0 Kudos
Adventurer
Adventurer
6,797 Views
Registered: ‎04-11-2012

Re: Many small AXI slaves vs. Few large slaves

The "two cores" thing was the second question. The first referred to many more cores. I have about 15 AXI4LITE slave cores at the moment, of which two have an internal sub-bus with another 4 slave cores each. It's especially these latter two that I'm wondering if there would be much benefit in merging.
0 Kudos