01:26
harryho has joined #m-labs
01:26
cr1901_modern1 has joined #m-labs
01:28
cr1901_modern has quit [Ping timeout: 240 seconds]
03:12
_whitelogger has joined #m-labs
06:14
cr1901_modern1 has quit [Quit: Leaving.]
06:14
cr1901_modern has joined #m-labs
08:22
m4ssi has joined #m-labs
09:47
harryho has quit [Remote host closed the connection]
11:53
cr1901_modern has quit [Quit: Leaving.]
12:32
jfng has quit [Ping timeout: 250 seconds]
12:32
Stary has joined #m-labs
12:33
lynxis has quit [Ping timeout: 250 seconds]
12:33
jryans has quit [Ping timeout: 250 seconds]
12:34
lynxis has joined #m-labs
12:35
marble[m] has quit [Ping timeout: 240 seconds]
12:35
xobs has quit [Ping timeout: 250 seconds]
12:36
jayaura has quit [Ping timeout: 240 seconds]
12:37
xobs has joined #m-labs
12:38
jryans has joined #m-labs
12:39
marble[m] has joined #m-labs
12:39
jfng has joined #m-labs
12:39
jayaura has joined #m-labs
12:52
jfng has quit [Ping timeout: 248 seconds]
12:53
jfng has joined #m-labs
12:53
marble[m] has quit [Ping timeout: 250 seconds]
12:54
marble[m] has joined #m-labs
12:55
jryans has quit [Ping timeout: 248 seconds]
12:55
jryans has joined #m-labs
13:51
X-Scale` has joined #m-labs
13:54
edef_ has joined #m-labs
13:54
edef has quit [Killed (wolfe.freenode.net (Nickname regained by services))]
13:54
stekern_ has joined #m-labs
13:55
X-Scale has quit [Ping timeout: 268 seconds]
13:55
kristianpaul has quit [Ping timeout: 268 seconds]
13:55
Astro- has quit [Ping timeout: 268 seconds]
13:55
felix_ has quit [Ping timeout: 268 seconds]
13:55
stekern has quit [Ping timeout: 268 seconds]
13:55
remote_user__ has quit [Ping timeout: 268 seconds]
13:55
cyrozap has quit [Ping timeout: 268 seconds]
13:55
fengling has quit [Ping timeout: 268 seconds]
13:55
nurelin has quit [Ping timeout: 268 seconds]
13:55
kristian1 has joined #m-labs
13:55
felix___ has joined #m-labs
13:55
X-Scale` is now known as X-Scale
13:55
nurelin has joined #m-labs
13:55
Astro-_ has joined #m-labs
13:56
fengling has joined #m-labs
13:56
cyrozap has joined #m-labs
13:57
felix___ is now known as felix_
14:00
sb0 has joined #m-labs
14:02
kristian1 has quit [Quit: WeeChat 1.9.1]
14:02
kristianpaul has joined #m-labs
14:52
<
mtrbot-ml_ >
[mattermost] <weidazhang> @sb10q
14:52
<
mtrbot-ml_ >
[mattermost] <weidazhang> >>* what exactly should be done with the result of the frequency counter.
14:52
<
mtrbot-ml_ >
[mattermost] <weidazhang> Please give me a formal algorithm with detailed equations that take as
14:52
<
mtrbot-ml_ >
[mattermost] <weidazhang> input the raw value from the frequency counter and produce values that
14:52
<
mtrbot-ml_ >
[mattermost] <weidazhang> can be put directly into the Si549 and/or at designated places in the
14:52
<
mtrbot-ml_ >
[mattermost] <weidazhang> filter algorithms.
14:52
<
mtrbot-ml_ >
[mattermost] <weidazhang>
14:52
<
mtrbot-ml_ >
[mattermost] <weidazhang> Do you mean the when running how do the tags go to filter?
14:52
<
mtrbot-ml_ >
[mattermost] <weidazhang> Or do you mean when calibration (starting), how do the register values calculated from the tags?
14:54
<
mtrbot-ml_ >
[mattermost] <sb10q> what are "tags"?
14:55
<
mtrbot-ml_ >
[mattermost] <sb10q> also I still don't know how you are doing the frequency counting
14:56
<
sb0 >
whitequark: doesn't seem to crash with "sys.stdout.buffer.write(b".")"
14:56
<
whitequark >
ZirconiumX: so i'm looking at your altera PR
14:56
<
sb0 >
also the CPU usage from glasgow has gone down a lot
14:56
<
ZirconiumX >
What did I fuck up?
14:57
<
whitequark >
sb0: yes, so the problem here is that the writes to stdout are synchronous
14:57
<
whitequark >
you might actually have a much better time if you used sockets instead
14:57
<
whitequark >
(synchronous and limited by PIPE_BUF at a time)
14:57
<
sb0 >
isn't it possible to put stdout in asyncio?
14:58
<
sb0 >
and is asyncio performance really better than regular i/o in python?
14:58
<
whitequark >
probably? your attempt at it is as good as mine
14:58
<
whitequark >
throughput? no. latency? in this case, yes
14:58
<
whitequark >
latency spikes due to PIPE_BUF and scheduling cause the entire asyncio domain to stop for that much time
14:58
<
sb0 >
I've used asyncio quite a lot and iirc it is possible to write to stdout (or any other fds) on linux asynchronously, however it is slow
14:59
<
whitequark >
which causes it to miss transfers
14:59
<
whitequark >
that's not the case unfortunately, linux AIO is completely broken
14:59
<
whitequark >
you're better off using epoll for sockets, and for non-sockets you can only use it with O_DIRECT on files
14:59
<
mtrbot-ml_ >
[mattermost] <weidazhang> @sb10q the two beat signals are fed into "deglitch", then pulses that indicate edges of the beat are given. The tags are the (time-wise) location of these pulses on a counter driven by the helper.
15:00
<
whitequark >
so in practice glibc uses a thread pool to implement POSIX AIO
15:00
<
sb0 >
isn't python asyncio using select()/poll()?
15:00
<
whitequark >
epoll, yes
15:00
<
mtrbot-ml_ >
[mattermost] <sb10q> @weidazhang I am talking about the frequency counter that is used to preinitialize the PLLs, not DDMTD
15:01
<
whitequark >
try replacing the stdout write with `return await asyncio.run_in_executor(None, sys.stdout.write, data)`
15:01
<
whitequark >
sys.stdout.buffer.write or something
15:01
<
whitequark >
could also run it in pypy, glasgow should work on pypy now
15:01
<
whitequark >
but that shouldn't be necessary, i think
15:02
<
whitequark >
or you could go for the nuclear option and just use libusb from rust.
15:02
<
whitequark >
i have some sample code for that somewhere, sec
15:02
<
mtrbot-ml_ >
[mattermost] <weidazhang> @sb10q for preinitialize the pll, tags are used.@sb10q for preinitialize the pll, tags are used.:
15:03
<
whitequark >
of course, you still have to be careful with it, because if you use it the obvious way, you'll still blow your latency budget
15:03
<
mtrbot-ml_ >
[mattermost] <sb10q> so there is no additional frequency counter?
15:04
<
mtrbot-ml_ >
[mattermost] <weidazhang> @sb10q I don't think so.
15:04
<
mtrbot-ml_ >
[mattermost] <sb10q> @weidazhang what do you mean "don't think so"? didn't you write that code?
15:06
<
mtrbot-ml_ >
[mattermost] <weidazhang> I wrote the code, I didn't add a "frequency counter" for preinitialize.
15:06
<
whitequark >
ZirconiumX: oh right, so i'm looking at altiobuf and altddio
15:06
<
whitequark >
you're using altddio_bidir for the single ended case
15:07
<
whitequark >
but altddio_out and altddio_in for the differential case
15:07
<
mtrbot-ml_ >
[mattermost] <weidazhang> I'm trying to think where this frequency counter come from.
15:07
<
whitequark >
i'm wondering if maybe the latter would work just fine for single ended too?
15:07
<
mtrbot-ml_ >
[mattermost] <sb10q> @weidazhang @hartytp mentioned a frequency counter
15:07
<
mtrbot-ml_ >
[mattermost] <sb10q> that's all. i don't know more
15:07
<
mtrbot-ml_ >
[mattermost] <sb10q> but that equation is definitely not what you are running in the FPGA, there's a floating point number here
15:08
<
mtrbot-ml_ >
[mattermost] <sb10q> and what exactly is is fMain and TAGdiff?
15:08
<
ZirconiumX >
whitequark: I don't see why it wouldn't, and I think I know where you're going with that
15:08
<
mtrbot-ml_ >
[mattermost] <sb10q> and fOSC
15:09
<
ZirconiumX >
My mental model of altddio_bidir is kinda like a tee pipe fitting, with the I/O pin in the middle
15:09
<
ZirconiumX >
So I couldn't think of a way to get it to work in the DDR case
15:09
<
whitequark >
yeah, neither do I
15:09
<
ZirconiumX >
*differential case
15:09
<
whitequark >
I'm guessing it's partially redundant with altiobuf
15:09
<
ZirconiumX >
Quite possibly.
15:10
<
sb0 >
whitequark: what's a good place to do "await loop.connect_write_pipe" on stdout? run()?
15:11
<
mtrbot-ml_ >
[mattermost] <weidazhang> No, I didn't run it on FPGA. It is one-time process at the start.
15:11
<
mtrbot-ml_ >
[mattermost] <sb10q> so where did you run it?
15:12
<
mtrbot-ml_ >
[mattermost] <weidazhang> matlab
15:12
<
whitequark >
sb0: interact
15:12
<
mtrbot-ml_ >
[mattermost] <weidazhang> fosc is si549 xo frequency, fmain is 125MHz
15:13
<
mtrbot-ml_ >
[mattermost] <sb10q> what is si549 xo frequency? which si549?
15:14
<
mtrbot-ml_ >
[mattermost] <sb10q> how did you run that into matlab? manually? and then hardcoded the result?
15:14
<
mtrbot-ml_ >
[mattermost] <sb10q> how did you extract the tag info from the prototype?
15:14
<
sb0 >
whitequark: seems to have solved the problem
15:14
<
mtrbot-ml_ >
[mattermost] <weidazhang> fosc is 152.5MHz
15:14
<
mtrbot-ml_ >
[mattermost] <sb10q> 152.5MHz??
15:14
<
mtrbot-ml_ >
[mattermost] <sb10q> why?
15:14
<
mtrbot-ml_ >
[mattermost] <weidazhang> fosc is 152.6MHz
15:14
<
mtrbot-ml_ >
[mattermost] <weidazhang> datasheet says so
15:14
<
mtrbot-ml_ >
[mattermost] <sb10q> what's that si549?
15:15
<
mtrbot-ml_ >
[mattermost] <weidazhang> sorry typo 152.6MHz
15:15
<
mtrbot-ml_ >
[mattermost] <sb10q> is that even on sayma/kasli?
15:15
<
mtrbot-ml_ >
[mattermost] <sb10q> I thought those oscillators were running at 125MHz
15:15
<
ZirconiumX >
wq: my contributions to nMigen might be on hold for a little bit because I want to spend my hyperfocus on Mistral stuff.
15:15
<
mtrbot-ml_ >
[mattermost] <weidazhang> the dcxo is si549
15:15
<
mtrbot-ml_ >
[mattermost] <sb10q> aaah
15:16
<
whitequark >
ZirconiumX: i'll just rewrite it myself the way i think it should be done, based on your code
15:16
<
mtrbot-ml_ >
[mattermost] <sb10q> you mean the internal reference of the si549
15:16
<
mtrbot-ml_ >
[mattermost] <sb10q> ok I see
15:16
<
whitequark >
already halfway there, actually
15:16
<
mtrbot-ml_ >
[mattermost] <weidazhang> it has an internal xo runs at 152.6MHz
15:16
<
ZirconiumX >
whitequark: sure
15:16
<
mtrbot-ml_ >
[mattermost] <weidazhang> yes, you right
15:16
<
whitequark >
btw, shouldn't it be vendor.intel
15:16
<
whitequark >
i just realized
15:16
<
mtrbot-ml_ >
[mattermost] <sb10q> ok and what about fMain?
15:16
<
sb0 >
whitequark: ah no, still crashes
15:16
<
mtrbot-ml_ >
[mattermost] <weidazhang> fmain is 125MHz
15:16
<
sb0 >
but after a longer time
15:16
<
ZirconiumX >
whitequark: vendor.altera_part_of_intel :P
15:16
<
whitequark >
ZirconiumX: ouch
15:17
<
whitequark >
sb0: what's the current code
15:19
<
mtrbot-ml_ >
[mattermost] <weidazhang> @sb10q your previous question, yes, manually read it, I've got xilinx ila and used to have a uart connection
15:19
<
whitequark >
but you can't easily change pipe buffer size, which is why i suggested a socket
15:20
<
whitequark >
or rather, PIPESIZE is important here, i think, PIPEBUF only affects atomicity or something like that
15:20
<
sb0 >
I'm just doing "| pv > /dev/null" atm
15:21
<
sb0 >
glasgow run logic -V 3.3 --pins-d 0,1 | pv > /dev/null
15:22
<
whitequark >
does loop.connect_write_pipe set O_ASYNC ?
15:23
<
whitequark >
With SelectorEventLoop event loop, the pipe is set to non-blocking mode.
15:23
<
whitequark >
but you're not using SelectorEventLoop, are you?
15:23
<
whitequark >
oh i see, epoll is also SelectorEventLoop
15:24
<
whitequark >
that's interesting
15:24
<
sb0 >
maybe this is also why sigrok crashed...
15:25
<
whitequark >
sigrok crashed for me since forever whereas glasgow generally does not
15:25
<
whitequark >
i've left a similar applet (RGB capture) on for many minutes
15:25
<
whitequark >
i'd need to reproduce this locally to continue
15:27
<
whitequark >
yep, reproduced it
15:27
<
whitequark >
let's see
15:31
<
whitequark >
sb0: can you run `glasgow run benchmark latency`
15:31
<
sb0 >
I: g.applet.internal.benchmark: running benchmark mode latency for 8.000 MiB
15:31
<
sb0 >
I: g.applet.internal.benchmark: mode latency: mean: 396.43 µs stddev: 190.72 µs worst: 4632.86 µs
15:37
<
whitequark >
sb0: so that means 128k in flight at most
15:37
<
whitequark >
try setting `_packets_per_xfer = 256` in demultiplexer.py
15:38
<
whitequark >
that seems to work much better for me
15:38
<
whitequark >
# To try and balance these effects, we choose a medium buffer size that should work well with most
15:38
<
whitequark >
# applications. It's possible that this will need to become customizable later, but for now
15:38
<
whitequark >
# a single fixed value works.
15:38
<
whitequark >
prophetic words.
15:41
<
whitequark >
ok, it still crashes with that value
15:41
<
whitequark >
how annoying
15:42
<
whitequark >
sb0: the combination of _packets_per_xfer = 256 and using iface.read() (without size argument) works much better
15:42
<
whitequark >
because this way it doesn't slice buffers in python
15:43
<
sb0 >
okay, that works now
15:43
<
sb0 >
less CPU usage too
15:43
<
whitequark >
as you have noticed, getting low latency with USB bulk transfers at 1/2 HS bandwidth is not trivial
15:43
<
whitequark >
to be honest i'm surprised it works at all (not your specific case, just in general)
15:43
<
whitequark >
given how badly designed USB is
15:48
<
sb0 >
hmm can still get it to crash if I load the CPU
15:48
<
sb0 >
I guess I should move the processing to the FPGA
15:48
<
whitequark >
at least add RLE or something
15:48
<
whitequark >
or move processing there, yeah.
15:48
<
whitequark >
you can increase the buffer sizes further but since the latency is not bounded it'll never work 100% reliably
15:48
<
sb0 >
bah. probably works well enough for that prototype
15:49
<
whitequark >
_max_packets_per_ep = 2048; _packets_per_xfer = 512
15:49
m4ssi has quit [Remote host closed the connection]
15:49
<
sb0 >
eventually this will move to a FPGA
15:49
<
sb0 >
also increase iface.get_in_fifo depth I suppose?
15:49
<
whitequark >
that probably matters only marginally
15:49
<
whitequark >
since the overflow is by dozens or hundreds of kb
16:08
cr1901_modern has joined #m-labs
16:12
mumptai has joined #m-labs
16:15
<
sb0 >
okay that's quite stable now
16:17
sb0 has quit [Quit: Leaving]
16:21
<
whitequark >
eventually i'll rewrite the glasgow demultiplexer in rust
16:21
<
whitequark >
and have it run with elevated priority i think
16:21
<
whitequark >
ionice that is
16:22
<
whitequark >
i'm not entirely sure if preempt-rt could be used to make it hard realtime instead, but i'll try that too
16:34
<
mtrbot-ml_ >
[mattermost] <hartytp> @sb10q yes, so the "counter" is just the tag output of the DDMTD core
16:34
<
mtrbot-ml_ >
[mattermost] <hartytp> the idea is to do a one-off calibration during lock acquisition, doing some basic maths in firmware
16:40
<
mtrbot-ml_ >
[mattermost] <hartytp> previously Weida did this by hand and hard-coded the results, but that's not ideal as not guaranteed to work over PVT so best to do each lock
16:40
<
mtrbot-ml_ >
[mattermost] <hartytp> IIRC @weidazhang sent you a document a while back (around 06/08/2019) with a step by step explanation of the lock acquisition process including calibration
16:41
<
mtrbot-ml_ >
[mattermost] <hartytp> and we talked it though in detail then. Is there something that doesn't make sense?
16:41
<
mtrbot-ml_ >
[mattermost] <hartytp> the DDMTD TAG stuff was in the original pseudo code @weidazhang sent you that described his DDMTD core.
17:05
lkcl has quit [Ping timeout: 240 seconds]
17:17
<
ZirconiumX >
whitequark: so I realise the current code is not great because it was mostly a proof of concept, but what would you suggest I work on in terms of code?
17:18
<
whitequark >
ZirconiumX: you don't need to do anything, i'll finish updating it and then verify it on my cyclone-iii board
17:18
<
whitequark >
oh, you could add FFSynchronizer and ResetSynchronizer overrides
17:18
<
whitequark >
using whichever alt* thing they recommend using
17:19
<
ZirconiumX >
Didn't you mention the ResetSynchroniser stuff could be done in pure nMigen?
17:19
<
whitequark >
ZirconiumX: yes, and this works if you don't care about timing analysis or timing-driven synthesis
17:20
<
ZirconiumX >
Judging by the comments, Altera certainly don't :P
17:20
<
whitequark >
what, really?
17:20
<
whitequark >
the reset synchronizer you linked (some verilog code) mentioned that the alt* thing marked the timing paths appropriately
17:20
<
whitequark >
which sounds like something we want
17:20
<
whitequark >
what was the link again?
17:23
<
ZirconiumX >
Trying to find it
17:24
<
whitequark >
The advantage of using the altera_std_synchronizer is that
17:24
<
whitequark >
it takes care of the quartus properties to preserve the registers of the shift
17:24
<
whitequark >
chain and apply the SDC constraints for us.
17:24
<
whitequark >
yeah i'm pretty sure nmigen needs to use this.
17:25
<
whitequark >
(* altera_attribute = {"-name SYNCHRONIZER_IDENTIFICATION FORCED_IF_ASYNCHRONOUS; -name DONT_MERGE_REGISTER ON; -name PRESERVE_REGISTER ON "} *) reg din_s1;
17:25
<
whitequark >
right, so you'll use reset_n as input for ResetSynchronizer, and din for FFSynchronizer
17:32
<
whitequark >
ZirconiumX: i think your DDR code can't work correctly
17:32
<
whitequark >
you're inserting an inverter between altddio and altiobuf
17:33
<
whitequark >
this is just FYI, i'm reviewing it to find and fix issues like thi
17:33
<
ZirconiumX >
Mmm, fair enough
17:33
<
ZirconiumX >
It should definitely be tested
17:34
<
ZirconiumX >
I'm also pretty bad at commenting my code, sorry ^^;;
17:35
<
whitequark >
that's not an issue really
17:35
<
whitequark >
i just read it side by side with intel docs
17:35
<
ZirconiumX >
Given the width arguments, it shouldn't need the for loop
17:35
<
whitequark >
yes, i fixed that too
17:36
<
ZirconiumX >
So presumably the ResetSynchroniser stuff is an override of create_missing_domain?
17:37
<
whitequark >
look at xilinx_7series code
17:38
<
whitequark >
get_ff_sync / get_reset_sync
17:41
<
whitequark >
ZirconiumX: is there a "dff with width" primitive in altera?
17:42
<
ZirconiumX >
Sadly not
17:42
<
whitequark >
that's kind of obnoxious
17:43
<
ZirconiumX >
You can get all sorts of fun things like a J-K flip-flop
17:43
<
whitequark >
i guess we could use $dff
17:43
<
ZirconiumX >
Would Yosys lower that?
17:46
<
whitequark >
yep, found it
17:47
<
whitequark >
should we be using alt_* io stuff instead of altiobuf_*?
17:47
<
whitequark >
i forget what the difference is
17:48
<
ZirconiumX >
whitequark: altiobuf_* gets you width parameters
17:48
<
whitequark >
ah right ok
17:48
<
ZirconiumX >
You'd have to instantiate one of these manually
17:48
<
ZirconiumX >
Per bit
17:49
<
ZirconiumX >
I'm pretty sure altiobuf_X lowers to alt_X plus some flops if necessary
17:50
<
whitequark >
what would altiobuf_x use flops for?
18:03
<
_whitenotifier >
[m-labs/nmigen] whitequark b70c836 - vendor.intel: add Quartus support. (WIP)
18:03
<
_whitenotifier >
[nmigen] whitequark synchronize pull request #178: vendor.altera: add Quartus support (WIP) -
https://git.io/fjbbr
18:10
<
ZirconiumX >
whitequark: things like the delay chain that altiobuf offers
18:10
<
whitequark >
i'm pretty sure those are hard logic
18:14
<
ZirconiumX >
whitequark: It's possibly worth noting that Quartus treats (* useioff *) as a guide, not a rule
18:20
<
whitequark >
ZirconiumX: did you ever
*not* get the Extra Info (176219): No registers were packed into other blocks message ?
18:28
<
whitequark >
so the
*input* of the DFF is constrained.
18:28
<
whitequark >
i'm so confuse
18:36
<
whitequark >
ok i see, it should be on the module ports actually
18:36
<
whitequark >
that works i guess
18:38
<
whitequark >
wow holy shit
18:38
<
whitequark >
you
*have* to provide (*useioff=1*) and (*keep=1*) with a number specifically, but,
18:39
<
whitequark >
it will actually complain that the value is invalid or something
18:40
<
ZirconiumX >
If it doesn't think it's a legal option, it'll accept but ignore it
18:40
<
whitequark >
nope, it actually packs the registers
18:40
<
whitequark >
and keeps the net i want to keep
18:40
<
ZirconiumX >
Huh, that's handy
18:41
<
whitequark >
it looks like i need write_verilog -decimal to make quartus happy
18:42
<
ZirconiumX >
But yeah it fails silently if you put the annotation outside of the module ports
18:42
<
ZirconiumX >
And I think it also complains if you don't put the buffers in the top-level module
18:43
<
whitequark >
of course it does.
18:43
<
whitequark >
i was thinking just today "maybe stuffing all the buffers in the top-level module is kind of a hack"
18:44
<
ZirconiumX >
I suggest you test though :P
18:44
<
whitequark >
nah i'm sure some vendor will fuck it up.
18:45
<
whitequark >
ok, -decimal makes it shut up
*and* do the register packing
18:45
<
whitequark >
christ. how do people cope with this without building their own HDL
18:48
<
ZirconiumX >
For some reason I don't think I'll be buying another Altera dev board
18:48
<
ZirconiumX >
By the way, whitequark, remember the headaches we had trying to build a bitstream that worked on my board?
18:49
<
whitequark >
by the way, most toolchains are like that.
18:49
<
whitequark >
altera is only like
18:49
<
ZirconiumX >
Turns out GENERATE_RBF_FILE ON silently enables bitstream compression
18:49
<
whitequark >
very slightly worse than usual
18:49
<
ZirconiumX >
This is not documented anywhere
18:49
<
whitequark >
vivado is slightly better than usual.
18:49
<
ZirconiumX >
And the chip doesn't appear to boot with an uncompressed bitstream
18:50
<
ZirconiumX >
The chip
_requires_ bitstream compression
18:50
<
whitequark >
??????
18:50
<
ZirconiumX >
This is also not documented anywhere
18:50
<
ZirconiumX >
But thankfully the compression algorithm itself
*appears* to be documented in a patent
18:51
<
ZirconiumX >
So you can't actually implement a bootable bitstream without giving Altera grounds to sue on patent infringement
18:51
<
_whitenotifier >
[m-labs/nmigen] whitequark 8b315f8 - vendor.intel: add Quartus support. (WIP)
18:51
<
_whitenotifier >
[nmigen] whitequark synchronize pull request #178: vendor.altera: add Quartus support (WIP) -
https://git.io/fjbbr
18:51
<
whitequark >
ZirconiumX: ok i mean all this stuff is patented from beginning to end anyway
18:51
<
whitequark >
you're not losing much
18:52
<
ZirconiumX >
Unfortunately it's a patent, which means it's vague as all fuck
18:53
<
ZirconiumX >
You get a warning if that is left unset because it's "underutilising" your hardware
18:53
<
ZirconiumX >
Except that I have yet to see Quartus get any meaningful benefit from parallel processing
18:54
<
whitequark >
i get this warning: Warning (18236): Number of processors has not been specified which may cause overloading on shared machines. Set the global assignment NUM_PARALLEL_PROCESSORS in your QSF to an appropriate value for best performance.
18:54
<
ZirconiumX >
That one
18:54
<
whitequark >
underutilizing or overloading?
18:55
<
ZirconiumX >
*sigh*
18:55
<
ZirconiumX >
Okay so there's a
*different* warning for underutilising
18:56
<
ZirconiumX >
Warning (12473): User specified to use only one processors but 6 processors were detected which could be
18:56
<
ZirconiumX >
used to decrease run time.
18:56
<
whitequark >
ahahaha
18:56
<
ZirconiumX >
So the correct default to get it to very definitely shut up is "ALL"
18:57
<
ZirconiumX >
You can't fucking win
18:57
<
ZirconiumX >
Is this Schadenfreude: the compiler?
19:01
<
whitequark >
catch-22 the toolchain
19:02
<
ZirconiumX >
I'm just glad Quartus doesn't have something like -Werror, because zero-warning compilation on this would be a nightmare
19:03
<
whitequark >
brutal
19:23
<
_whitenotifier >
[m-labs/nmigen] whitequark 0b1afa2 - vendor.intel: add Quartus support. (WIP)
19:23
<
_whitenotifier >
[nmigen] whitequark synchronize pull request #178: vendor.altera: add Quartus support (WIP) -
https://git.io/fjbbr
19:23
<
whitequark >
aha, finally found a toolchain using
*not* / to separate hierarchical names
19:24
<
ZirconiumX >
whitequark: So, the altera_std_synchronizer thing takes in a clock. Would that be ff_sync.i_clk in get_ff_sync?
19:25
<
whitequark >
ClockSignal(ff_sync._o_domain)
19:52
<
_whitenotifier >
[nmigen] ZirconiumX opened pull request #246: vendor.intel: reset synchronisers -
https://git.io/JeW9e
19:52
<
ZirconiumX >
whitequark: ^
19:56
<
_whitenotifier >
[nmigen] codecov[bot] commented on pull request #246: vendor.intel: reset synchronisers -
https://git.io/JeW9Y
20:05
<
_whitenotifier >
[m-labs/nmigen] whitequark b9e57fd - build.plat,vendor: always synchronize reset in default sync domain.
20:17
<
_whitenotifier >
[nmigen] ZirconiumX synchronize pull request #246: vendor.intel: reset synchronisers -
https://git.io/JeW9e
20:20
<
_whitenotifier >
[nmigen] ZirconiumX synchronize pull request #246: vendor.intel: reset synchronisers -
https://git.io/JeW9e
20:24
mumptai has quit [Quit: Verlassend]
20:25
<
_whitenotifier >
[m-labs/nmigen] whitequark ddcff57 - vendor.intel: add Quartus support. (WIP)
20:25
<
_whitenotifier >
[nmigen] whitequark synchronize pull request #178: vendor.altera: add Quartus support (WIP) -
https://git.io/fjbbr
20:30
gnufan_home has joined #m-labs
20:40
<
_whitenotifier >
[nmigen] ZirconiumX synchronize pull request #246: vendor.intel: reset synchronisers -
https://git.io/JeW9e
20:40
<
_whitenotifier >
[nmigen] ZirconiumX synchronize pull request #246: vendor.intel: reset synchronisers -
https://git.io/JeW9e
20:41
<
_whitenotifier >
[m-labs/nmigen] ZirconiumX 7dbd822 - vendor.intel: reset synchronisers (#246)
20:41
<
_whitenotifier >
[nmigen] whitequark closed pull request #246: vendor.intel: reset synchronisers -
https://git.io/JeW9e
20:41
<
_whitenotifier >
[nmigen] whitequark synchronize pull request #178: vendor.altera: add Quartus support (WIP) -
https://git.io/fjbbr
20:44
<
_whitenotifier >
[m-labs/nmigen] whitequark 27a32f0 - build.plat: don't create default sync domain as reset-less.
20:50
<
whitequark >
ZirconiumX: Info (332114): Typical MTBF of Design is 1e+09 years or 3.15e+16 seconds.
21:00
<
ZirconiumX >
whitequark: So they mean it's going to break by tomorrow?
21:11
<
whitequark >
Info (332164): Evaluating HDL-embedded SDC commands
21:11
<
whitequark >
that's one way to do it
21:13
<
whitequark >
ZirconiumX: ah, you should have used altera_std_synchronizer_bundle for the FFSynchronizer
21:13
<
whitequark >
which is the same thing but n times anyway
21:16
<
_whitenotifier >
[m-labs/nmigen] whitequark 7257c20 - build.plat: elaborate result of create_missing_domain() against platform.
21:50
<
_whitenotifier >
[m-labs/nmigen] whitequark edc21df - vendor.intel: add Quartus support. (WIP)
21:50
<
_whitenotifier >
[nmigen] whitequark synchronize pull request #178: vendor.altera: add Quartus support (WIP) -
https://git.io/fjbbr
22:26
<
_whitenotifier >
[m-labs/nmigen] whitequark ace10a6 - vendor.intel: add Quartus support. (WIP)
22:27
<
_whitenotifier >
[nmigen] whitequark synchronize pull request #178: vendor.intel: add Quartus support (WIP) -
https://git.io/fjbbr
22:38
<
_whitenotifier >
[m-labs/nmigen-boards] whitequark b785b7c - test.blinky: invert LED status when button/switch is active.
22:40
<
_whitenotifier >
[m-labs/nmigen-boards] whitequark 5ab2151 - de0{,cv}: {Altera→Intel}Platform
22:44
gnufan_home has quit [Quit: Leaving.]
23:19
<
_whitenotifier >
[m-labs/nmigen] whitequark 7dfd7fb - examples: update blinky, add some explanatory text about domains.