00:00
<
awygle >
how different i wonder
00:00
<
sorear >
well this is a FPGA, so the O(20 ps) gate delays are going to be swamped by wire delay in most cases
00:01
<
awygle >
yeah but wire delay is symmetrical
00:01
<
awygle >
so in terms of duty cycle/asymmetry it'd be the buffers, right?
00:03
<
sorear >
to the extent that wire delay is a function of distributed capacitance (and not transmission-line effects) it could be affected by asymmetrical drive current
00:03
<
awygle >
hm, that's true
00:04
* sorear
has a very poor grasp of on-chip inductive effects
00:14
s_frit_ has quit [Remote host closed the connection]
00:15
s_frit has joined ##openfpga
00:15
kuldeep has quit [Read error: Connection reset by peer]
00:32
kuldeep has joined ##openfpga
00:55
azonenberg_work has quit [Ping timeout: 245 seconds]
01:48
<
openfpga-github >
Glasgow/master ea54b02 whitequark: applet.spi.flash_25c: query JEDEC database to identify flash.
01:48
<
openfpga-github >
Glasgow/master f59e1a1 whitequark: applet.spi.master: implement optimized reads/writes....
01:48
<
openfpga-github >
Glasgow/master f44acd0 whitequark: applet.spi.flash_25c: use optimized reads/writes.
01:48
<
whitequark >
sorear: f44acd0a9d72e
01:48
unixb0y has quit [Ping timeout: 264 seconds]
01:48
<
whitequark >
sorear: 23:59 < sorear> which, well, CMOS, so the rise and fall times are going to be different
01:48
<
whitequark >
doesn't all modern CMOS have larger PMOS transistor than NMOS?
01:48
<
whitequark >
like just in the standard cells
01:48
unixb0y has joined ##openfpga
01:55
Miyu has joined ##openfpga
01:57
<
sorear >
I wouldn't know
01:58
<
sorear >
but even with compensation it won't be exactly the same
01:59
Miyu has quit [Ping timeout: 240 seconds]
01:59
<
sorear >
so running a clock through a large number of simple CMOS buffers is not the best idea
02:00
<
whitequark >
mh, true
02:00
<
travis-ci >
whitequark/Glasgow#107 (master - f44acd0 : whitequark): The build has errored.
02:02
futarisIRCcloud has joined ##openfpga
02:02
<
openfpga-github >
Glasgow/master 7176c85 whitequark: applet.spi.flash_25c: add protect command.
02:02
<
openfpga-github >
Glasgow/master 3900447 whitequark: applet.spi.flash_25c: check for command completion success.
02:02
<
openfpga-github >
Glasgow/master 76d4c8d whitequark: applet.spi.flash_25c: add verify command.
02:02
* sorear
wonders if this is what differential buffers are for
02:03
ym has quit [Quit: Leaving]
02:06
lovepon has joined ##openfpga
02:14
<
travis-ci >
whitequark/Glasgow#108 (master - 7176c85 : whitequark): The build has errored.
02:29
<
awygle >
early results indicate my 20% duty cycle was not the result of routing buffers but a very badly implemented clock mux
02:31
unixb0y has quit [Ping timeout: 272 seconds]
02:32
Xark_ has left ##openfpga ["Leaving"]
02:34
unixb0y has joined ##openfpga
02:35
Xark has joined ##openfpga
02:38
emeb has left ##openfpga [##openfpga]
02:40
pie_ has joined ##openfpga
02:41
pie__ has quit [Read error: Connection reset by peer]
02:52
noobineer has joined ##openfpga
02:56
Ekho- is now known as Ekho
03:42
azonenberg_work has joined ##openfpga
03:45
<
azonenberg_work >
awygle: i imagine they try to design internal buffers to be as symmetric as possible
03:45
<
azonenberg_work >
because otherwise you end up having the slower path be your performance bottleneck
03:46
<
azonenberg_work >
if you size the fets right then both paths are about equal
03:50
noobineer has quit [Ping timeout: 264 seconds]
03:53
<
azonenberg_work >
Took me a while but i managed to bang together a test firmware that drives the DAC on the ams101 eval board
03:53
<
azonenberg_work >
then digitizes it with the xadc
03:53
<
azonenberg_work >
and streams to a PC via UDP packets (512 12-bit samples padded to 16 bits each, total 1024 bytes, per packet)
03:53
<
azonenberg_work >
Now to go make a proper viewer app...
03:54
<
azonenberg_work >
This is only 16 Mbps of data so it shouldn't be that big a deal, but it's still more than my wimpy Cairo renderer can handle i think
03:55
<
azonenberg_work >
And it's at least enough that I can make a good test for my OpenGL renderer
03:55
<
azonenberg_work >
Time to dust off all of my GL notes and setup code that i haven't used in years...
04:02
<
awygle >
That's cool
04:09
s_frit has quit [Remote host closed the connection]
04:09
<
awygle >
doing a real bad job leaving work at work tonight lol
04:09
s_frit has joined ##openfpga
04:09
<
awygle >
finally figured out insane duty cycle, want to make thing work
04:10
<
awygle >
can't till Monday
04:10
<
awygle >
frustrating
04:10
Bob_Dole has quit [Read error: Connection reset by peer]
04:12
<
azonenberg_work >
awygle: lol i figured out a way to break out of a sandboxed environment i was in for work just before leaving today
04:13
<
azonenberg_work >
Felt like a good stopping point, i knew if i started exploring the whole thing that afternoon i'd never stop
04:13
<
azonenberg_work >
Aaaand it seems like gtkglextmm no longer exists for gtk3
04:13
<
azonenberg_work >
now to figure out the current state of the art for this...
04:14
<
awygle >
state of the art is vulkan :-P
04:14
<
awygle >
thing is three days late, if I could work on it I would but I need input from colleagues....
04:17
<
azonenberg_work >
awygle: yeah but that doesnt seem to be supported on debian stable
04:17
<
awygle >
Debian stable might as well be the middle ages cmv
04:18
<
azonenberg_work >
It's what i run in production, and any tools i develop have to run there
04:18
<
azonenberg_work >
period
04:19
<
azonenberg_work >
Stretch was released in june 2017 so not too long ago
04:19
<
awygle >
you're un-fun to troll due to your tendency to take me seriously
04:19
<
azonenberg_work >
I know full well it's old :)
04:19
<
awygle >
Debian must support vulkan, just not in gtk. Yes?
04:20
<
azonenberg_work >
Probably
04:22
<
azonenberg_work >
But then again i'm running on a 2015-vintage thinkpad with integrated graphics
04:22
<
azonenberg_work >
that doesnt even support opengl >3
04:22
<
sorear >
petition for "integrated graphics" on laptops to mean "does not have a hard req on an eGPU"
04:23
<
whitequark >
azonenberg_work: wtf
04:23
<
whitequark >
my '16 xps13
04:23
<
whitequark >
has nice intel graphics
04:23
<
awygle >
I have "integrated graphics" - a gtx1050
04:23
<
whitequark >
hahaha
04:24
<
azonenberg_work >
whitequark: $ lspci | grep VGA
04:24
<
azonenberg_work >
00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)
04:25
<
whitequark >
wtf ancient
04:25
<
azonenberg_work >
$ glxinfo | grep "OpenGL version"
04:25
<
azonenberg_work >
OpenGL version string: 3.0 Mesa 13.0.6
04:25
noobineer has joined ##openfpga
04:25
<
whitequark >
i thought that's a smiley
04:25
<
azonenberg_work >
LOL no
04:25
<
azonenberg_work >
not a scissor either :p
04:26
<
azonenberg_work >
althoguh that would be more >8 i guess?
04:26
<
azonenberg_work >
But yeah, this is what i am developing on until i unpack my desktop gear
04:26
<
azonenberg_work >
So whatever i build has to target this at minimum
04:28
<
sorear >
that's what, HSW?
04:29
pie_ has quit [Ping timeout: 246 seconds]
04:30
<
azonenberg_work >
... oh thats cool, gtk now has a built in gtk rendering widget
04:30
<
azonenberg_work >
that's convenient
04:33
<
awygle >
... Gtk can render gtk now?
04:34
<
awygle >
good for gtk I guess...
04:36
<
SolraBizna >
$ glxinfo | grep "OpenGL version"
04:36
<
SolraBizna >
OpenGL version string: 2.1 Mesa 18.1.7
04:40
<
SolraBizna >
it would be 3.x but it's missing some single feature that was in core
04:43
<
azonenberg_work >
built in gl*
04:45
<
azonenberg_work >
SolraBizna: what annoys me more is that i have a very nice quadro sitting in the basement in a box
04:45
<
awygle >
yes, gtkglarea
04:45
<
azonenberg_work >
that i cant use :p
04:45
<
awygle >
Gtk4 has a gtkvulkanarea apparently
04:45
<
azonenberg_work >
Because i have nowhere to set up a desktop that isn't a construction site
04:45
<
azonenberg_work >
awygle: yeah and i'm using 3.22
04:45
<
awygle >
but not stable yet
04:45
<
azonenberg_work >
Which just barely has gtkglarea
04:48
<
sorear >
i'm not sure a 68040 macintosh will be an improvement from a haswell thinkpad
04:49
<
SolraBizna >
you just need to accelerate to relativistic speeds
04:50
Bob_Dole has joined ##openfpga
04:55
iximeow_ is now known as iximeow
04:59
rofl_ has joined ##openfpga
05:00
jcarpenter2 has quit [Ping timeout: 252 seconds]
05:46
lovepon has quit [Ping timeout: 276 seconds]
05:48
genii has joined ##openfpga
05:51
rohitksingh has joined ##openfpga
05:55
noobineer has quit [Ping timeout: 240 seconds]
05:57
Bike has quit [Quit: Lost terminal]
06:01
noobineer has joined ##openfpga
06:05
rohitksingh has quit [Quit: Leaving.]
06:15
genii has quit [Remote host closed the connection]
06:18
rohitksingh has joined ##openfpga
06:28
rohitksingh has quit [Quit: Leaving.]
06:33
rqou has quit [Remote host closed the connection]
06:33
rqou has joined ##openfpga
06:37
ym has joined ##openfpga
06:51
s_frit has quit [Ping timeout: 272 seconds]
06:51
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
07:00
s_frit has joined ##openfpga
07:08
_whitelogger has joined ##openfpga
07:15
futarisIRCcloud has joined ##openfpga
07:16
rohitksingh has joined ##openfpga
08:02
lovepon has joined ##openfpga
08:24
rohitksingh has quit [Quit: Leaving.]
08:53
keesj has quit [Ping timeout: 252 seconds]
09:16
<
travis-ci >
whitequark/Glasgow#109 (master - 7176c85 : whitequark): The build has errored.
09:31
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
10:22
pie_ has joined ##openfpga
10:47
rohitksingh has joined ##openfpga
10:49
lovepon has quit [Ping timeout: 264 seconds]
10:53
vup has joined ##openfpga
10:58
Laksen has joined ##openfpga
11:02
rohitksingh has quit [Quit: Leaving.]
12:15
pie_ has quit [Ping timeout: 244 seconds]
12:34
pie_ has joined ##openfpga
13:39
Bike has joined ##openfpga
14:12
Miyu has joined ##openfpga
14:21
_whitelogger has joined ##openfpga
14:23
carl0s has joined ##openfpga
15:17
Hamilton has joined ##openfpga
15:29
pie_ has quit [Ping timeout: 252 seconds]
15:29
rohitksingh has joined ##openfpga
15:37
_whitelogger has joined ##openfpga
15:47
rohitksingh has quit [Quit: Leaving.]
15:50
pie_ has joined ##openfpga
15:50
Hamilton has quit [Quit: Leaving]
15:54
rohitksingh has joined ##openfpga
16:07
rohitksingh has quit [Quit: Leaving.]
16:07
rohitksingh1 has joined ##openfpga
16:07
rohitksingh1 has quit [Client Quit]
17:05
rohitksingh1 has joined ##openfpga
17:08
rohitksingh1 has quit [Client Quit]
17:09
rohitksingh has joined ##openfpga
17:11
rohitksingh has quit [Client Quit]
17:11
rohitksingh has joined ##openfpga
17:11
rohitksingh has quit [Client Quit]
17:15
rohitksingh1 has joined ##openfpga
17:15
rohitksingh has joined ##openfpga
17:19
rohitksingh has joined ##openfpga
17:27
rohitksingh1 has quit [Quit: Leaving.]
17:42
Bob_Dole has quit [Ping timeout: 250 seconds]
17:45
noobineer has quit [Ping timeout: 252 seconds]
17:46
rohitksingh has joined ##openfpga
17:48
Laksen has quit [Quit: Leaving]
17:50
rohitksingh has quit [Client Quit]
17:50
rohitksingh has joined ##openfpga
18:20
rohitksingh has quit [Ping timeout: 246 seconds]
18:22
rohitksingh has joined ##openfpga
18:54
Bob_Dole has joined ##openfpga
19:18
rohitksingh has quit [Ping timeout: 252 seconds]
19:42
<
mithro >
Just for everyone's information, we are trying to move a lot of the SymbiFlow discussion into the #symbiflow IRC channel -- it will be only for on topic discussion however
19:46
rohitksingh has joined ##openfpga
20:17
<
tnt >
mithro: looking at the doc ... seems you set everything to 0 for min size.
20:19
<
tnt >
mithro: I'm curious what size and fmax you get ...
20:20
<
daveshah >
However, beware that some of them make it longer rv32i
20:20
<
daveshah >
Disabling ENABLE_REGS_16_31 makes it closer to rv32e
20:26
<
sorear >
that should have ~no effect on ice40up5k
20:26
<
sorear >
since the BRAMs are 256 deep
20:26
<
sorear >
going to rv32e only helps if you don't have BRAMs
20:35
rohitksingh has quit [Ping timeout: 245 seconds]
20:42
<
mithro >
So, looks like p_ENABLE_REGS_16_31=0 increases the ICESTORM_LC usage from 3967 -> 3988!?
20:46
<
cr1901_modern >
mithro: Accessing x16-x31 in rv32e is supposed to fault. picorv32 doesn't impl this, but I imagine there's a separate check in the reg fields of the opcodes, so that picorv32 knows to ignore insns using x16-x31
20:46
<
sorear >
mithro: you do need a few more LCs to latch rs1[4], rs2[4], and rd[4]
20:46
<
sorear >
oh, the other way around
20:53
<
mithro >
Any idea why p_CATCH_ILLINSN=0 would
*increase* the resource usage?
20:58
<
sorear >
it shouldn't
20:58
<
sorear >
at this point I suspect that your control inputs are being inverted or otherwise misinterpreted
20:58
<
sorear >
is it possible to confirm in simulation that you've actually built a core that hangs on illegal instructions?
21:00
<
mithro >
sorear: Possibly
21:01
<
daveshah >
Also check how many LUTs/FFs Yosys is synthesising
21:01
<
daveshah >
Look at the end of synthesis
21:01
<
daveshah >
It could be that LC usage increases because LUTs and FFs don't pack so well, even if there are fewer cells in total
21:01
<
mithro >
Smallest config of our SoC seems to be Info: ICESTORM_LC: 3872/ 5280 73%
21:02
<
sorear >
3872 is rather silly
21:04
<
daveshah >
How much of that is from the SoC though?
21:05
<
tnt >
mithro: fmax ?
21:06
<
mithro >
tnt: Faster than whatever our clock is...
21:06
<
daveshah >
picorv32 itself seems to be about 1755 LCs in a small config, based on the wrapper design we used for nextpnr benchmarks early on
21:10
<
sorear >
roughly how much features does the soc have
21:16
<
mithro >
sorear: Not a huge amount...
21:17
lovepon has joined ##openfpga
21:37
<
mithro >
I may have been a little to aggressive....
21:37
<
mithro >
Info: ICESTORM_LC: 1/ 5280 0%
21:43
<
mithro >
Looks like it might be the UART...
21:43
<
daveshah >
mithro: for the record. picorv32 in a small config, UART, QSPI flash and a CSI-2 receiver with downsampler and GPIO is just 3474 LCs
21:43
<
daveshah >
So something in your design is eating LCs
21:44
<
mithro >
It looks like it might be the FIFO buffers in the UART...
21:45
<
daveshah >
That would make sense, if they don't map well to ice40 BRAMs
21:47
carl0s has quit [Quit: Page closed]
21:49
<
mithro >
Info: ICESTORM_LC: 3604/ 5280 68% - Before Info: ICESTORM_LC: 3090/ 5280 58% - After
21:50
<
mithro >
So it looks like 514 ICESTORM_LCs are being used to implement the FIFO for the uart
21:51
<
daveshah >
Seems like a minimal SoC with picorv32, UART and flash is 2633 LCs for me
21:53
<
mithro >
daveshah: flash == XIP flash?
21:54
<
daveshah >
2527LCs with the catches and two stage shift disabled
21:58
<
mithro >
Yeah, that sounds much closer to what I would expect
22:09
<
daveshah >
mithro: You can either grep the Yosys output for the memory name (should be storage/storage_1) in this case
22:09
<
daveshah >
Or just build a test case
22:10
<
daveshah >
Here it appears to have an async read port "rdport" which will be ruining things
22:15
* mithro
goes to add stuff to cr1901_modern Todo list :-P
22:17
<
mithro >
daveshah: aren't async read ports pretty common for memory?
22:17
<
daveshah >
mithro: yes, they are
22:18
<
daveshah >
However they are never supported by BRAM
22:18
<
daveshah >
Most FPGAs have distributed RAM that does support them
22:18
<
daveshah >
And is also good for smaller memories like this
22:18
<
daveshah >
Sadly the ice40 doesn't have dist RAM
22:20
<
cr1901_modern >
Interesting...
22:20
<
cr1901_modern >
well I knew all this :P
22:20
<
cr1901_modern >
I meant interesting there was an async RAM in liteX
22:21
<
daveshah >
Coincidentally, fixed a bug in Yosys last week handling memories with one async and one sync read port
22:21
<
daveshah >
This was for the openrisc demo on ECP5
22:22
<
cr1901_modern >
did it accidentally infer a BRAM when it shouldn't?
22:22
<
sorear >
tangentially, am excite about DDR3 in prjtrellis
22:22
<
daveshah >
cr1901_modern: it actually threw away one of the ports after correctly inferring two distributed RAMs
22:23
<
cr1901_modern >
Oh I don't see how that would be disasterous. Nope, not at all
22:23
<
daveshah >
Because it added a register on the second port with a clock of 1'bX, which was then thrown away
22:23
<
daveshah >
Fun to debug the fact the TLB was thus broken
22:23
<
cr1901_modern >
debug + TLB == not fun
22:23
<
daveshah >
Seems to be used with fwft
22:23
<
mithro >
EBR contents are preserved (write protected) during configuration, assuming that voltage supplies are maintained
22:23
<
mithro >
throughout. Consequently, data can be passed between multiple iCE40 configurations by leaving it in an EBR block and then skipping pre-loading during the subsequent reconfiguration.
22:24
<
sorear >
what exactly is the ice40 bram reset glitch?
22:25
<
sorear >
i know there's a thing where they're unusable for a certain length of time after global reset
22:25
<
daveshah >
mithro: Beware that from my understanding of the hardware that would
*not* apply to the SPRAM, only the real BRAM
22:25
<
daveshah >
sorear: I think they are usable but not initialised for a few us after the fpga boots
22:29
<
mithro >
Any idea what fwft acronym might stand for?
22:29
<
daveshah >
mithro: first word fall through
22:29
<
daveshah >
Common feature of FIFOs
22:30
<
cr1901_modern >
mithro: Perhaps the best thing to do is add a "buffered_uart=False" arg to the BaseSoC constructor
22:30
<
cr1901_modern >
and just eat the one cycle cost
22:30
<
cr1901_modern >
what does first word fall through mean?
22:31
<
daveshah >
The first word written to an otherwise empty FIFO will be put on the output without doing a read first
22:32
<
cr1901_modern >
How does that help you?
22:32
<
daveshah >
It's not something I've ever needed to actually use
22:33
<
sorear >
it saves a cycle or two of latency if you need to use a decoupling fifo somewere like a CPU fetch queue
22:33
<
daveshah >
Yes, this is true
22:34
<
cr1901_modern >
I feel like I'm not visualizing this correctly
22:34
<
daveshah >
Should probably be able to implement one without going for an async read port by having some explicit bypass logic
22:34
<
cr1901_modern >
Guess I'll do some research after I rest
22:34
<
daveshah >
I guess migen assumed it would always end up in distributed RAM because it was too small for BRAM anyway
22:35
<
daveshah >
Forgetting about the ice40
22:36
<
cr1901_modern >
daveshah: Migen, for a very long time was Xilinx-oriented
22:36
<
cr1901_modern >
nowadays ice40 backend has some parity w/ Xilinx
22:36
<
cr1901_modern >
SO yes, I totally believe that
22:37
<
cr1901_modern >
The reason navre doesn't fit into ice40hx1k (small AVR core) is because it uses dist RAM instead of BRAM
22:37
<
daveshah >
Plenty of cores in general don't map well to the ice40 without distributed RAM
22:37
<
daveshah >
I think Dan had some problems with the ZipCPU too
22:37
* ZipCPU
reads backlog
22:38
<
daveshah >
We are discussing the lack of distributed RAM in the ice40 and how that causes the FIFO in migen to map poorly when first word fall through is enabled
22:39
<
ZipCPU >
Yes, I had an unexpected hiccup porting the ZipCPU to the iCE40. The register file wasn't registered on read, and the iCE40 block RAM's don't allow this
22:56
<
mithro >
I have a strange feeling of deja vu with this pull request...
23:14
<
mithro >
cr1901_modern: ping?
23:24
inode has joined ##openfpga
23:32
* ZipCPU
takes a look
23:34
<
ZipCPU >
I've heard several discussions regarding how to handle this
23:34
<
ZipCPU >
Last I heard, between daveshah and clifford the two knew how to handle it, it was just a matter of time, energy, and priority
23:34
<
ZipCPU >
I could be wrong, but that's what I remember from that last conversation
23:37
<
sorear >
i wonder if the techmap works for smaller multiplies
23:37
<
ZipCPU >
Part of the issue has been all of the various ways multiplication units can be configured.
23:37
<
ZipCPU >
The abundance of potential configurations has ... slowed down the development of this capability
23:38
<
sorear >
since that's a 33x33 multiply and the up5k only has 16x16 multipliers
23:39
<
sorear >
the UP5k has 8 16-bit multipliers, so you could break down the 32-bit multiply that way
23:39
<
sorear >
(although it'd make more sense for the core to spread out the multiply over 4 cycles)
23:42
sgstair has quit [Remote host closed the connection]
23:46
sgstair has joined ##openfpga