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: 
Highlighted
Visitor paulmtcuk
Visitor
374 Views
Registered: ‎01-29-2019

Aurora 8b10b throughput efficiency lower than expected

Jump to solution

Hello.

Perhaps you can help me as I have a few questions regarding the efficiency I can run the aurora 8b10b protocol. They might be silly questions - but better asking than not asking at all as it might help some others out there.

I have set up a duplex aurora protocol at 1.08 Gbps at 2 byte width framing mode (and scrambling enabled if that matters) GT ref clk is 135MHz hence the 1.08Gbps rate. I have checked user_clk - it's running at approx 50.6 MHz. Now, right off the bat assuming that IF txtready is 'ready' 100% of the time, that's only allowing 16bit*50.6 = 809Mbit/s. Now I understand there is an overhead of possibly up to 25%,

So my first question is, the user_clk take into consideration the overhead or not?

Secondly, I have created a driver that checks when tx_tready = '1' on falling edge of user_clk, it will set tready = '1' and set data on data lines such that aurora will clock the data on the rising edge of user_clk. The driver requires four clocks minimum to complete the frame (of 4 x 16-bits). On the last clock, tlast is set to '1'.

I have found that (in framing mode any way) that tlast is being toggled at approximately 8.43 MHz. That's six user clocks per data frame instead, meaning I'm only getting up to 64bit*8.43 = 539.7 MBit/s. As I require at least 800Mbit/s it is far from ideal. and that's only 54% efficiency.

So second question is : Are six user clocks per data typical for framing mode?

Last question (maybe a silly one) : If I use streaming mode should I expect to require fewer user clocks per data chunk? (I'm going to try this anway) 

Edit: I've now tried streaming using the first two MSbits as frame identifiers, now receiving 64-bit 'frames' at 13.5 MHz or 864 MBit, which is a bit better (albeit losing two bits each byte) - but still less efficient than I'd expect! I'm testing with 4 byte data width now...

Thanks!

0 Kudos
1 Solution

Accepted Solutions
Moderator
Moderator
298 Views
Registered: ‎05-02-2017

Re: Aurora 8b10b throughput efficiency lower than expected

Jump to solution

 

hi @paulmtcuk ,

 

Throughput is an interplay of packet size, packet overhead, inter-packet gap, line rate and the number of lanes. throughput is measured in simulation by shmooing the packet size from 896 bytes to 1024 bytes while keeping the other configurations intact.
 
For a given packet size, following steps are followed to calculate throughput in simulation:
 
        Send packets say 1000 packets of fixed length (1K bytes)  back to back on AXI Stream interface
        Note the time stamp of first VALID AXI transaction (t1 ns)
        Note the time stamp of last valid cycle of 1000th  packet AXIs transaction (t2 ns)
        Difference between both the time stamps (t2 - t1) gives the time required to send 1000 packets of 1K each.
        Throughput = (No_of_Packets * Packet_size * 8)/ (t2-t1)  bits/sec
 
Aurora 8b/10b  achieves 80% of expected throughput without CRC under certain conditions.
Regards
Chandra sekhar
----------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if solution provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.
----------------------------------------------------------------------------------------------

View solution in original post

1 Reply
Moderator
Moderator
299 Views
Registered: ‎05-02-2017

Re: Aurora 8b10b throughput efficiency lower than expected

Jump to solution

 

hi @paulmtcuk ,

 

Throughput is an interplay of packet size, packet overhead, inter-packet gap, line rate and the number of lanes. throughput is measured in simulation by shmooing the packet size from 896 bytes to 1024 bytes while keeping the other configurations intact.
 
For a given packet size, following steps are followed to calculate throughput in simulation:
 
        Send packets say 1000 packets of fixed length (1K bytes)  back to back on AXI Stream interface
        Note the time stamp of first VALID AXI transaction (t1 ns)
        Note the time stamp of last valid cycle of 1000th  packet AXIs transaction (t2 ns)
        Difference between both the time stamps (t2 - t1) gives the time required to send 1000 packets of 1K each.
        Throughput = (No_of_Packets * Packet_size * 8)/ (t2-t1)  bits/sec
 
Aurora 8b/10b  achieves 80% of expected throughput without CRC under certain conditions.
Regards
Chandra sekhar
----------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if solution provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.
----------------------------------------------------------------------------------------------

View solution in original post