- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I am trying to replace the 40G Ethernet IP by the 100G in a new FPGA that I just bought (FPGA is stratix 10 : 1SX280HU2F50E1VGAS).
The link is not coming up, I am looping back 2 Ethernet ports of the same FPGA.
When I access the Avalon-MM interface, all the registers that I try to read return the value :
0xdeadc0de.
I am guessing it is not a register clock issue (as I wouldn't be able to read anything), nor a reset issue (as some statistics counter value would be 0x00000000).
Do you have any idea of what could be happening here?
Regards
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
HI,
One of the possibility is you are reading the reg from invalid/incorrect memory region.
You may want to check the reg address memory mapping in your design again.
Thanks.
Regards,
dlim
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
HI,
One of the possibility is you are reading the reg from invalid/incorrect memory region.
You may want to check the reg address memory mapping in your design again.
Thanks.
Regards,
dlim
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Dlim,
actually I noticed that I had forgotten to enable RS-FEC in the IP, since I enabled it, my design is not able to pass fitter.
Fitter reports "cannot place node [...] for hundreds of lines.
My design is very simple and almost empty (only 10% of FPGA logic is used), it contains :
4 times :
[100G ethernet IPs] + logic to answer to an ARP or ICMP request (ton answer PING).
I am guessing the design is not constrained enough, I have generated the low latency 100g ethernet FPGA ip example design, and I got inspired by the .sdc constrain file provided in it. Basically :
for { set i 0 } { $i < $x100g_count } { incr i } {
set THIS_RX_RS_CORE_CLK [get_clocks gen_XG[$i].xg_wrapper|GEN_100G.av_top|alt_e100s10_0|WITH_FEC.fecpll|RXIOPLL_INST.fecrxpll|alt_e100s10ex_iopll_rx_outclk0]
set THIS_RX_RS_CORE_NCK [get_clocks gen_XG[$i].xg_wrapper|GEN_100G.av_top|alt_e100s10_0|WITH_FEC.fecpll|RXIOPLL_INST.fecrxpll|alt_e100s10ex_iopll_rx_n_cnt_clk]
set THIS_TX_RS_CORE_CLK [get_clocks gen_XG[$i].xg_wrapper|GEN_100G.av_top|alt_e100s10_0|WITH_FEC.fecpll|TXPLL_IN.TXFPLL_INST.tx_pll_gen.fectxpll|clkdiv_output_div1]
set THIS_RX_CORECLK [get_clocks gen_XG[$i].xg_wrapper|GEN_100G.av_top|alt_e100s10_0|xcvr|rx_clkout2|ch1]
set THIS_TX_CORECLK [get_clocks gen_XG[$i].xg_wrapper|GEN_100G.av_top|alt_e100s10_0|xcvr|tx_clkout2|ch1]
set THIS_REF_CLK [get_clocks cg_ref[$i]]
set_clock_groups -exclusive -group $THIS_TX_CORECLK -group $THIS_RX_CORECLK -group $THIS_TX_RS_CORE_CLK -group $THIS_RX_RS_CORE_CLK -group $THIS_RX_RS_CORE_NCK -group $TRS_DIVIDED_OSC_CLK -group $STATUS_CLK -group $REF_CLK
}
# set false path from PMA fifo flags' clock to clk_status (ex_100g_inst|ex_100g_inst|alt_s100|csr|eio_flags_csr[*])
for { set i 0 } { $i < $x100g_count } { incr i } {
for {set chNum 0} {$chNum < 4} {incr chNum} {
set RX_CLK [get_clocks gen_XG[$i].xg_wrapper|GEN_100G.av_top|alt_e100s10_0|xcvr|rx_pcs_x2_clk|ch$chNum]
set TX_CLK [get_clocks gen_XG[$i].xg_wrapper|GEN_100G.av_top|alt_e100s10_0|xcvr|tx_pcs_x2_clk|ch$chNum]
set_clock_groups -exclusive -group $RX_CLK -group $STATUS_CLK -group $TRS_DIVIDED_OSC_CLK
set_clock_groups -exclusive -group $TX_CLK -group $STATUS_CLK -group $TRS_DIVIDED_OSC_CLK
}
}
Do you see any constraint missing here?
Thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Hopefully, now your problem is solved. Let me know if you need any help yet because i handled the same issue few days ago.
Thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Aleytu,
no my problem is not solved... Can you let me know how you handled it?
Thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi all, problem is solved.
For 0xdeadc0de : I had an error in my addressing register, I was reading a wrong address.
For the placement : I updated to Quartus 20.2
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page