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
<sb0> rjo, how is it concise, where do you use the other Constant features?
<rjo> sb0: i use them in redpid. the idea would be to use these CSRConstants both in the FHDL and in the runtime.
<rjo> sb0: a CRG might e.g. configure itself based on the CSRConstants.
<sb0> well that's not consistent with the way other CSRs work (.storage/.status ...)
<rjo> concise means "not having to sprinkle .value everywhere".
<rjo> yes. it is not consistent. should we change CSRStorage/Status?
<sb0> that would be a problem because there are control signals as well
<rjo> they could still be there.
<sb0> still looks a bit ugly
<rjo> hmm.
<rjo> there would be some shakedown in CSR* anyway when https://github.com/m-labs/migen/issues/30 is addressed.
<rjo> and while i remember it: a neat optimization for systems with lots of CSRStorage(write_from_device=False) might be to have a BRAM just for readback. that would reduce the resources needed for that potentially very large and distributed readback mux tree.
<sb0> rjo, yes, but you expect a Signal to be a leaf node, not something that contains other Signals
<rjo> sb0: ack. but could CSR* at least alias to their "dominant Signal" when used in expressions?
<sb0> how would that "alias" work? fhdl level?
<sb0> how about just making the property names shorter?
<rjo> na. shorter proerty names does not help me.
<rjo> fhdl could try to .__fhdl__() things it does not know about.
<sb0> hmm, alright ...
<sb0> in wrap() I suppose
<rjo> yes. maybe. i have not fully thought that through though.
sj_mackenzie has joined #m-labs
FabM has quit [Ping timeout: 264 seconds]
fengling has joined #m-labs
fengling has quit [Ping timeout: 245 seconds]
FabM has joined #m-labs
fengling has joined #m-labs
<GitHub31> [artiq] sbourdeauducq pushed 1 new commit to master: http://git.io/v4Qjx
<GitHub31> artiq/master 9826b19 Sebastien Bourdeauducq: gui/scan: adapt layout to show more decimals
travis-ci has joined #m-labs
<travis-ci> m-labs/artiq#589 (master - 9826b19 : Sebastien Bourdeauducq): The build failed.
travis-ci has left #m-labs [#m-labs]
FabM has quit [Ping timeout: 260 seconds]
travis-ci has joined #m-labs
<travis-ci> m-labs/artiq#589 (master - 9826b19 : Sebastien Bourdeauducq): The build failed.
travis-ci has left #m-labs [#m-labs]
FabM has joined #m-labs
<sb0> whitequark, https://travis-ci.org/m-labs/artiq/jobs/92192190#L1495 << do you know what is going on?
<whitequark> did you change the recipe?
<sb0> no
<sb0> maybe conda was updated?
<whitequark> weird
fengling has quit [Ping timeout: 245 seconds]
fengling has joined #m-labs
<sb0> whitequark, so what is missing in the compiler now?
<whitequark> sb0: inlining
<GitHub17> [artiq] whitequark pushed 1 new commit to new-py2llvm: http://git.io/v47bu
<GitHub17> artiq/new-py2llvm 28fa687 whitequark: Merge branch 'master' into new-py2llvm
<GitHub57> [artiq] whitequark pushed 1 new commit to new-py2llvm: http://git.io/v45sx
<GitHub57> artiq/new-py2llvm 88b7990 whitequark: transforms.iodelay_estimator: fail statements with indeterminate delay inside `with parallel`.
fengling has quit [Ping timeout: 245 seconds]
<GitHub29> [artiq] whitequark pushed 1 new commit to new-py2llvm: http://git.io/v458W
<GitHub29> artiq/new-py2llvm d0f86e0 whitequark: transforms.interleaver: add safety check.
<whitequark> \o/ 100 tests
fengling has joined #m-labs
fengling has quit [Ping timeout: 245 seconds]
<sb0> larsc, do you know why high speed DACs include those annoying clock domain transfer mechanisms?
<sb0> i.e. you have a data clock and a analog clock with some buffer in-between whose apparent function is to cause you trouble when synching multiple dacs
<sb0> ...and sure enough, include some pesky serial configuration interface with a ton of obscure registers. if they made them act like like D flip flops + resistor network, they would be too easy to use.
<larsc> absorbing jitter and what not
<larsc> usually these chips have a sync pin that resets all the fifos at the same time
<whitequark> hm, no, I didn't implement interleaving correctly yesterday...
<sb0> next step: ACPI plug and play
<sb0> how does this absorb jitter? do they have a PLL?
<larsc> depends on the part
<sb0> but for those that do not have a built-in PLL, the dual-clock feature is imbecilic, right?
<larsc> I don't know
<larsc> there might be a performance reason
<larsc> have a low-jitter low-fanout clock for the DAC
<larsc> and one with more jitter for the interface
<larsc> and for the high speed stuff you usually want to be source synchronous for the data interface as well
<larsc> meaning the clock will be generated by the fpga
<larsc> (the interface clock)
<larsc> and that most certainly adds noise
<larsc> usually you just use a ODDR with inputs set to 1 and 0 that is clocked by the same clock as the logic that generates the digital data
<sb0> low-fanout? when you have a lot of DACs to synchronize, that clock has high fanout
<sb0> and there are low jitter clock distribution chips
<larsc> the source synchronous makes more sense
<sb0> yes
<larsc> I was just sorting my thoughts ;)
<sb0> it just displaces the problem though. using ODELAY so that each DAC interface meets timing would be easier than dealing with the proprietary and obscure DAC synchronization mechanism du jour.
<larsc> well, if you are not source synchronous you are a lot more sensible to e.g. temperature
<larsc> sensitive
rohitksingh has joined #m-labs
<sb0> the synchronization line is also sensitive to temperature and voltage
rohitksingh has quit [Client Quit]
<larsc> well the idea is that you give them all the same length
<sb0> I don't see this working well with a simple FIFO reset for synch. if it toggles near a transition of the clock, some DACs will register it in one cycle and others in the other cycle...
<larsc> which is probably why the sync needs to be clock synchronous
<larsc> which chip are you talking about in particular
<larsc> ?
<sb0> not any chip in particular... all those that I have looked at have this dual-clock mechanism and synch problems
<larsc> if the chip has a JESD chip the synchronization handling is standardized
<larsc> a JESD interface
<larsc> for LVDS there might be custom solutions
<sb0> yes, and I guess you need it anyway with JESD due to CDR jitter
sj_mackenzie has quit [Ping timeout: 240 seconds]
<sb0> for the lvds ones, if the synch line is system synchronous, you'd rather make the data the same instead of introducing this FIFO complication
<sb0> maybe this was done in spartan-6 times where output delays were crappy... but the 7-series ones are nice
<GitHub76> [artiq] whitequark pushed 2 new commits to new-py2llvm: http://git.io/v4dbL
<GitHub76> artiq/new-py2llvm cc623c1 whitequark: Reformat.
<GitHub76> artiq/new-py2llvm cb9e7d1 whitequark: compiler.iodelay: subtraction certainly shouldn't be commutative.
Mon_ has joined #m-labs
Mon_ is now known as Guest12156
ylamarre has joined #m-labs
sj_mackenzie has joined #m-labs
Guest12156 has quit [Quit: This computer has gone to sleep]
<GitHub124> [artiq] whitequark pushed 2 new commits to new-py2llvm: http://git.io/v4F19
<GitHub124> artiq/new-py2llvm 73c358a whitequark: Reformat.
<GitHub124> artiq/new-py2llvm 50e7b44 whitequark: compiler: actually implement interleaving correctly (calls are still broken)....
ylamarre1 has joined #m-labs
ylamarre has quit [Ping timeout: 252 seconds]
ylamarre has joined #m-labs
ylamarre1 has quit [Ping timeout: 240 seconds]
Mon_ has joined #m-labs
Mon_ is now known as Guest73046
sj_mackenzie has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/]
Guest73046 has quit [Quit: This computer has gone to sleep]
acathla has quit [Quit: Coyote finally caught me]
<whitequark> hrm
<whitequark> i think the old interleaver had a correctness issue
<whitequark> sb0: please take a look at the lit-test/test/interleaving
<whitequark> does the test output look correct for you now (after I push some commits in a moment)?
<whitequark> there are many subtle ways this ordering can be wrong, but I believe I got it right now
<GitHub151> [artiq] whitequark pushed 1 new commit to new-py2llvm: http://git.io/v4N4K
<GitHub151> artiq/new-py2llvm cb3b811 whitequark: compiler: maintain both the IR and iodelay forms of delay expressions....
<GitHub53> [artiq] whitequark pushed 1 new commit to new-py2llvm: http://git.io/v4NED
<GitHub53> artiq/new-py2llvm 57dd163 whitequark: transforms.artiq_ir_generator: fix decomposition of explicit delay_mu().
<GitHub77> [artiq] whitequark pushed 1 new commit to new-py2llvm: http://git.io/v4N2W
<GitHub77> artiq/new-py2llvm 150ec71 whitequark: transforms.interleaver: handle function calls (as atomic so far)....
<GitHub183> [artiq] whitequark force-pushed new-py2llvm from 150ec71 to 82b4708: http://git.io/vmI6O
<GitHub183> artiq/new-py2llvm 82b4708 whitequark: transforms.interleaver: handle function calls (as atomic so far)....
mumptai has joined #m-labs
acathla has joined #m-labs
mumptai has quit [Remote host closed the connection]
_florent_ has quit [Ping timeout: 240 seconds]
_florent_ has joined #m-labs