Friday, 2023-12-08

*** tpb <[email protected]> has joined #litex00:00
*** Hammdist <[email protected]> has quit IRC (Quit: Client closed)00:01
Hoernchen_oh00:27
Hoernchen_that bad?00:27
Hoernchen_please document that somewhere so someone can take a look at it00:27
Hoernchen_but tbh.. the ddr pins should be fine up to ~400Mhz or something like that, so well above 125mhz rgmii00:28
Hoernchen_well below the 1.25gsps xilinx claims for all of their ios, but still..00:28
*** jk- <[email protected]> has quit IRC (Remote host closed the connection)01:29
*** Hammdist <[email protected]> has joined #litex01:35
*** ElfenKaiser <ElfenKaiser!~deadsalmo@2a0a-a540-cd41-0-71e0-e69c-6993-6dfd.ipv6dyn.netcologne.de> has quit IRC (Quit: Konversation terminated!)01:52
HammdistI thought of doing one last experiment on the versa board. I put a copy of the expected rx packet in a BRAM. now when I send packets it counts the number of errors in each of the 8 GMII bit positions. this produces basically a fingerprint of io cell performance that should not vary if I recompile my design (which would normally produce slight02:22
Hammdistvariations in P&R). indeed it did not vary. switching to the other port produced a different fingerprint that again didn't vary when I recompiled the design. so barring some terrible misunderstanding of how RGMII is supposed to be hooked up to the FPGA, and assuming the delay values are OK (which I've checked several times now), I think it must be02:22
Hammdista flaw in the io cell design, however improbable that may seem a priori02:22
Hoernchen_uh02:29
Hoernchen_the actual test is to use diamond to synthesize the design with proper constraints and/or io buffers02:31
Hammdistwell I suppose it's possible that there's a bug in nextpnr that causes it not to configure DDR correctly, or cause arbitrary other problems. I don't have diamond installed though and I don't have experience using it. basically I need/want to use an open source toolchain so it's not practically helpful to me if it works in diamond02:57
Hoernchen_without diamond your io timing is basically guessing and hoping that it just works..03:18
Hammdistwhat do you mean by I/O timing, exactly? I expect nextpnr measures the delay from where logic outputs to where the ODDR is, doesn't it?03:19
Hammdistis there additional travel from ODDR to pin that isn't accounted for, or what?03:20
Hoernchen_see https://github.com/YosysHQ/nextpnr/issues/39903:21
*** Degi <[email protected]> has quit IRC (Ping timeout: 256 seconds)03:21
*** Degi <[email protected]> has joined #litex03:21
Hammdistinteresting read. seems like I might need to add IFS1P3DX/OFS1P3DX?03:25
*** Hammdist <[email protected]> has quit IRC (Quit: Client closed)03:28
*** Hammdist <[email protected]> has joined #litex03:28
Hoernchen_and/or use the newly introduced https://github.com/YosysHQ/yosys/commit/10589c57bfd0e5dd29c739e9d9db044cdb8ad8ed03:29
HammdistI don't know what to make of this info. on the one hand this seems to a huge blind spot and that if I can learn about these I/O issues I can potentially improve my design. on the other hand there seems to be only a very small trickle of information on this topic03:37
Hammdistis there a chance that blindly applying -iopad would just automatically fix things?03:38
Hoernchen_well you could give it a try..03:38
Hoernchen_but, again, without running diamond at least once you're pretty much guessing03:38
Hammdistwell -iopad did ... nothing03:43
Hammdistanyways none of this is litex-specific. I will ask more about I/O constraints in the ##fpga channel tomorrow03:45
Hammdistmaybe I will put together a super-minimal tx-only mac that repeatedly broadcasts a fixed ethernet packet as a case study to see if the tx errors can be fixed with OFS1P3DX03:48
*** Hammdist <[email protected]> has quit IRC (Quit: Client closed)04:22
*** Hammdist <[email protected]> has joined #litex04:33
*** Hammdist <[email protected]> has quit IRC (Quit: Client closed)04:49
*** TMM_ <[email protected]> has quit IRC (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)06:56
*** TMM_ <[email protected]> has joined #litex06:56
*** FabM <FabM!~FabM@2a03:d604:103:600:2e60:8c7c:e8fb:7990> has joined #litex07:33
*** Hammdist <[email protected]> has joined #litex13:13
*** Hammdist <[email protected]> has quit IRC (Quit: Client closed)15:20
*** TMM_ <[email protected]> has quit IRC (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)15:27
*** TMM_ <[email protected]> has joined #litex15:27
ysionneauhmm I'm trying to build a LiteX SoC with some Module I am writing, and abc9 dies saying something about a combinatorial loop : ERROR: Assert `no_loops' failed in passes/techmap/abc9_ops.cc:795.15:59
ysionneauby running the yosys cmd in debug I think I've understood that the issue might come from a FSM 15:59
ysionneauthe FSM seems to be translated in verilog as always @(*) and maybe the state <= next_state causes a loop16:00
ysionneaubut I'm not sure...16:00
ysionneauhas anyone ever got this issue?16:00
zypyes, I had the same issue the other day, code that built fine with an older yosys refused to build after yosys switched to abc9 by default16:06
zypin my case it was some logic in a FSM that caused a loop with some stream flow control signals16:09
ysionneausame here, I am using streams 16:10
ysionneau(and a pretty recent yosys)16:11
ysionneauI'll try with -noabc916:12
zypyeah, -noabc9 worked for me, but it's better to fix the problem :)16:13
ysionneauit works for me as well, thanks16:13
*** Hammdist <[email protected]> has joined #litex16:15
zyphere's how I fixed my code: https://paste.jvnv.net/view/gNjOq16:17
tpbTitle: JVnV Pastebin – View paste – Untitled (at paste.jvnv.net)16:17
ysionneauboth version are really similar16:24
ysionneauwhich signal was giving you a comb loop ?16:24
zypprobably ready feeding into last16:28
Hammdistthe two pieces of code seem to have different behavior though if I understand correctly. in the first, the else block is executed whenever we don't go to output state, but it is not the same in the second16:30
zypno, the stream signals are moot unless the stream is valid & ready16:31
Hammdistcool, that's all right then16:39
ysionneauah now it's nextpnr who is complaining about a comb loop17:08
ysionneaubut this time I get a nice error message saying explicitely which signal is the problem17:09
ysionneaunice17:09
ysionneauah, found my issue ... I was doing s.eq(s+1) in a fsm.act() instead of NextValue(s, s+1)17:16
*** Hammdist <[email protected]> has quit IRC (Quit: Client closed)19:00
*** Hammdist <[email protected]> has joined #litex19:40
*** Hammdist <[email protected]> has left #litex20:37
*** FabM <FabM!~FabM@armadeus/team/FabM> has quit IRC (Ping timeout: 256 seconds)21:19
*** Hoernchen_ <Hoernchen_!~hornulus@osmocom/hoernchen> has quit IRC (Ping timeout: 252 seconds)21:24
*** Hoernchen <Hoernchen!~hornulus@osmocom/hoernchen> has joined #litex21:25
*** josuah <[email protected]> has joined #litex23:26

Generated by irclog2html.py 2.17.2 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!