sb0 changed the topic of #m-labs to: ARTIQ, Migen, MiSoC, Mixxeo & other M-Labs projects :: fka #milkymist :: Logs http://irclog.whitequark.org/m-labs
jbqubit has quit [Ping timeout: 260 seconds]
fengling has joined #m-labs
sandeepkr has joined #m-labs
sandeepkr has quit [Ping timeout: 244 seconds]
sandeepkr has joined #m-labs
kuldeep has joined #m-labs
rohitksingh_work has joined #m-labs
mumptai has joined #m-labs
balrog has quit [Ping timeout: 248 seconds]
balrog has joined #m-labs
<whitequark> sb0: do I understand correctly that wishbone registered feedback is used to break up the long CPU -> peripheral -> CPU path into two halves, to improve timings?
<whitequark> and it generally makes sense to either use it everywhere in your design or nowhere?
<sb0> yes
<sb0> well it makes sense to use it everywhere
<whitequark> ok
<sb0> justified (i.e. non toy project/opencores) use cases for non registered are very limited
<whitequark> I have some weird problem on this ice40 board
<whitequark> the CPU doesn't start up unless I add an external reset and poke it (by e.g. touching the wire to GND manually)
<whitequark> adding a POR domain with a counter that counts to 1024 and then resets the SYS domain doesn't change anything
<whitequark> it basically never starts running by itself, whereas with this external reset it always does
<sb0> is your POR actually working? can you see it on a scope?
<whitequark> it doesn't
<whitequark> well, not on the FPGA, in simulation everything works...
<whitequark> hm, let me try something
<whitequark> sb0: it was working but I accidentally inverted the polarity.
<whitequark> it works with my POR.
<whitequark> is it a known fact that built-in FPGA reset works badly?
<whitequark> or is it just iCE40 that's broken?
mumptai has quit [Quit: Verlassend]
<sb0> what is "built-in FPGA reset"?
<sb0> initializing registers from the bitstream?
<sb0> you have to be a bit careful with that yes, just as you have to be careful when to deassert a reset signal
<sb0> also mor1kx/lm32 are verilog and suffer from the "initialization fiasco"
<sb0> if you have a design with multiple asynchronous clock domains, using bitstream register init alone may be tricky or impossible
<whitequark> ok I see
<whitequark> and yes, ice40 has a built-in power-on reset (which they call so) that it uses to initialize the registers
<sb0> how does it handle multiple clock domains?
sandeepkr has quit [Read error: Connection reset by peer]
<whitequark> it doesn't
<sb0> Xilinx also has a global reset, but it's of limited use, due to multiclock reset deassertion issues
<sb0> they probably ought to scrap those features
<_florent_> whitequark: are you using yosys to generate the iCE40 bitstream? (just curious)
<whitequark> yep
<_florent_> how long does it takes to generate you SoC design with mor1kx?
<whitequark> 11s in synthesis, 53s total on my ivy bridge i7 laptop
<whitequark> sb0: oh and yes, you are right, these iCE40 FPGAs are good for nothing. the minimal mor1kx config (http://hastebin.com/lihezaralu.pl) takes just over 2000 slices, and it runs at a breakneck 25MHz
<sb0> xilinx even let you drive that global reset from user designs
<sb0> I wonder how this is supposed to work
<sb0> it sounds more like a "corrupt the state of your design" signal to me
<whitequark> maybe they have a reset generator there?
<sb0> but you need a reset generator per clock domain.
<sb0> and the fpga isn't going to guess how those clock domains are defined and how resets between them should be handled
<whitequark> so could you rely on the global reset to initialize everything, and then ungate the clocks in whatever sequence makes sense?
<sb0> if you do gated clocks, and synchronize the degating with the global reset, yes that works
<whitequark> and presumably the benefit is that you don't have to route around resets per your clock domain
<whitequark> I'm not sure how much impact that has in practice
<whitequark> _florent_: actually this might be a debug build of yosys and arachne
<sb0> I haven't seen FPGA designs using gated clocks to synchronize resets
<sb0> but I have rarely seen FPGA designs without broken reset synchronization either
<whitequark> _florent_: ah no, debug build of yosys, release build of arachne. so 40s for PAR is about right.
<_florent_> whitequark: thanks for the results, that's fast. Yosys/ICE40 can be interesting for really small designs
<whitequark> _florent_: that's *fast*?
<sb0> compile time i guess
<sb0> compared to the xilinx bloatware
<whitequark> yeah
<whitequark> that's very slow
<whitequark> I should profile arachne
<_florent_> whitequark: yes compile time compared to Xilinx
<whitequark> you mean xilinx is even worse on such small designs? that's depressing
<_florent_> whitequark: results are better with Vivado, but with ISE even a really small design was a least a few minutes...
<whitequark> wow
<larsc> speaking of taking a long time, I'm trying to enable zcu102 support in my Vivado installation. The guide says to run the enable_beta_device command
<larsc> what they don't tell you that the command takes 10 minutes
<larsc> each time you open vivado
<larsc> wtf?
<whitequark> what does `perf top` say?
<larsc> "productivity multiplied" ...
<larsc> whitequark: I don't know, the workaround is to use enable_beta_device partnumber
<larsc> but that of course is not in the guide
<whitequark> dreadful
<whitequark> why do people tolerate this
<larsc> I don't even understand how this could take 10 minutes in the first place
<whitequark> accidentally quadratic something?
<larsc> probably n**n
<sb0> whitequark, people tolerate this because the alternative is those puny ice40 that run a design 10x slower
<whitequark> sb0: why don't those large customers of xilinx put some pressure on them?
<sb0> whitequark, btw, what sort of frequency is the mass spectrometer tube supposed to run at?
<whitequark> well, I can't give you exact numbers until I know for sure what's the diameter of the rods
<whitequark> but think somewhere between 1 and 6 MHz, maybe 3
<whitequark> what does that change?
<sb0> how do you plan on generating those?
<whitequark> grab the cheapest DDS devboard I can find
<GitHub17> [migen] jordens pushed 1 new commit to master: https://git.io/vPSZV
<GitHub17> migen/master ddd18d2 Robert Jordens: build: colorize output...
<whitequark> for the He leak detector the requirements are miniscule, we don't even need scanning
<bb-m-labs> build #97 of migen is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/migen/builds/97
<bb-m-labs> build #149 of misoc is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/misoc/builds/149
<bb-m-labs> build #126 of artiq-board is complete: Failure [failed conda_build] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/126
<bb-m-labs> build #1020 of artiq is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1020
<whitequark> sb0: ugh. if I forget to do self.submodules.x = foo and do self.x = foo, then that will silently do nothing
<whitequark> can something be easily done with that?
<whitequark> actually, no, it still silently does nothing even though I put it in as a submodule
<whitequark> nvm, different bug
travis-ci has joined #m-labs
<travis-ci> m-labs/pdq2#26 (master - 6d17f2b : Robert Jordens): The build passed.
travis-ci has left #m-labs [#m-labs]
<whitequark> sb0: do you see anything obviously wrong here? http://hastebin.com/medenusahi.py
<whitequark> all reads seem to return 0 and all writes seem to do nothing (with thw UART)
<sb0> try to tie bus.dat_r to something to rule out interconnect issues
<whitequark> hm, I look at the simulation now, looks like uart_bus_cyc is never asserted
<whitequark> even worse... dbus_cyc is never asserted either. which would explain why it's broken.
<whitequark> sb0: ...
<whitequark> it works if I use r1 for the store address
<whitequark> it doesn't if I use r2
<whitequark> it works if I use r4 or r5
<whitequark> but it doesn't with r2 specifically
<whitequark> oh, that's somehow caused by p_OPTION_RF_ADDR_WIDTH
<whitequark> which doesn't seem to actually narrow the register file *but* breaks things in bizarre ways
<sb0> how do you simulate?
<whitequark> this should be done in migen actually, but I'm not sure what to do with clocks
<whitequark> probably something like run_simulation
<sb0> migen cannot simulate verilog instances
<whitequark> no
<whitequark> I mean migen should write these files itself
<whitequark> instead of requiring me to hack up build_top.s
<whitequark> *sh
<sb0> not that it's impossible to do, just that it hasn't been done
<sb0> talking to iverilog via vpi would do it
<whitequark> I know you can use VPI but the utility seems marginal if you don't need cosimulation with python code
<whitequark> and I just want to see what the hell is wrong with it, without having to synthesize and try it on hardware
<sb0> that's for cosimulation
<whitequark> ideally we wouldn't use VPI at all, but use a software model for OR1K
<whitequark> because in that case we can actually run, like, ARTIQ runtime on it, and it won't be glacially slow
<whitequark> that seems easier to integrate too.
<whitequark> no need to mess with VPI, just have a pipe to something that can request reads and writes.
kuldeep has quit [Ping timeout: 265 seconds]
fengling has quit [Ping timeout: 268 seconds]
kuldeep has joined #m-labs
<rjo> whitequark: iirc the qemu or1k is pretty decent.
<whitequark> sure. but that will need some hacking to get it to work with our IO memory
<cr1901_modern> sb0: I recall you saying that adding Verilog support to the Migen simulator is involved. I don't remember the full discussion.
<bb-m-labs> build #127 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/127
<bb-m-labs> build #1021 of artiq is complete: Failure [failed python_unittest_1] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1021
<whitequark> cr1901_modern: yes. the VPI interface is pretty aggravating to use IMO. and it is in C.
<whitequark> it's involved in the sense that there are moving parts, not that it is fundamentally hard
rohitksingh_wor1 has joined #m-labs
rohitksingh_work has quit [Ping timeout: 260 seconds]
<GitHub116> [artiq] sbourdeauducq pushed 1 new commit to master: https://git.io/vPSoK
<GitHub116> artiq/master 6aa13fb Sebastien Bourdeauducq: master/worker_db: set default value for archive
<rjo> sb0, _florent_: which license should jesd204b be?
<rjo> BSD or LGPL?
<_florent_> sb0, rjo: you can use what's better for you
<rjo> i am +1 for LGPLv3+ but wouldn't mind BSD either.
<sb0> either, but it should be clarified when merging into misoc
<rjo> _florent_, sb0: thanks. let's go LGPLv3+ then.
<bb-m-labs> build #128 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/128
<GitHub86> [conda-recipes] jordens pushed 1 new commit to master: https://github.com/m-labs/conda-recipes/commit/259a1a9e19d6a6b646d8412d43dfd611ba6e6a40
<GitHub86> conda-recipes/master 259a1a9 Robert Jordens: add jesd204b...
<bb-m-labs> build #1022 of artiq is complete: Failure [failed python_unittest_1] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/1022 blamelist: Sebastien Bourdeauducq <sb@m-labs.hk>
<bb-m-labs> build #234 of conda-lin64 is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/conda-lin64/builds/234
<GitHub115> [artiq] jordens pushed 1 new commit to phaser: https://git.io/vPSi5
<GitHub115> artiq/phaser 062aca2 Robert Jordens: conda/phaser: build-depend on jesd204b
rohitksingh_wor1 has quit [Read error: Connection reset by peer]
<bb-m-labs> build #129 of artiq-board is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-board/builds/129
rohitksingh has joined #m-labs
fengling has joined #m-labs
<sb0> rjo, i was proposing putting it into misoc
<sb0> so no separate package
attie_ is now known as attie
<rjo> sb0: as said in the commit message, it can move. i'd let the dust settle a bit and then do it.
<whitequark> the 2nd one seems unimplementable in an FPGA
<sb0> whitequark, there's an arbiter between the two masters.
<sb0> those diagrams are copy-paste from the wishbone specification document, which is very obtuse and I recommend ignoring
<sb0> the "pipeline" is just cores making regular point-to-point wishbone transactions
<whitequark> oh.
<whitequark> that's a very unhelpful way of putting it
<sb0> yes, the whole wishbone doc is like that
<sb0> the doc also has this weird license
<sb0> "The Publisher grants you the following rights for re-distribution of this ebook. [NO] Can be submitted to article directories (even YOURS) IF at least half is rewritten! [NO] Can be offered through auction sites. etc"
<whitequark> sb0: what's "cti" and "bte" in wishbone.Interface ?
<sb0> burst control signals
<sb0> you can ignore for simple designs
<whitequark> yeah
fengling has quit [Ping timeout: 268 seconds]
<whitequark> sb0: so if I use registered feedback, access takes two cycles but the critical path is cut in hakf
<whitequark> *half
<whitequark> what's the benefit?
<sb0> it doesn't slow down the rest of your design
<sb0> only the bus is slow. and you can make it less slow by using bursts.
<whitequark> oh
<larsc> well, you can't really burst mmio register access
<whitequark> why not, actually?
<larsc> hm, maybe you can
<larsc> depends on the barrier implementation of the CPU
rohitksingh has quit [Quit: Leaving.]
mumptai has joined #m-labs
<whitequark> ok, now I should go back to ARTIQ. I'm pretty confident about my peripheral design skill at this point
mumptai has quit [Quit: Verlassend]