<_whitenotifier-b>
[YoWASP/yosys] whitequark pushed 1 commit to develop [+1/-0/±0] https://git.io/JJIcB
<_whitenotifier-b>
[YoWASP/yosys] whitequark 02c4d12 - Add an auto-updater.
lkcl has quit [Ping timeout: 264 seconds]
<_whitenotifier-b>
[YoWASP/yosys] whitequark pushed 1 commit to develop [+1/-0/±0] https://git.io/JJIcz
<_whitenotifier-b>
[YoWASP/yosys] whitequark 54fb95d - [skip ci] Add an auto-updater.
lkcl has joined #nmigen
_whitelogger has joined #nmigen
<whitequark>
neat
<tpw_rules>
that seems like the opposite of what you want? i guess just for the gui
<tpw_rules>
but you would still want cursors and stuff
<tpw_rules>
also also, how are you gonna do the analog stuff for your scope?
<FL4SHK>
tpw_rules: it's only a scope for the insides of the FPGA
<FL4SHK>
i.e. I'm building a SignalTap
<FL4SHK>
whitequark: how do I store a Record inside of a Memory?
<FL4SHK>
without, uh, packing it myself
<FL4SHK>
looks like I'll have to pack it myself
<FL4SHK>
feature request: `shape` instead of `width` for `Memory`
<tpw_rules>
FL4SHK: ah
<tpw_rules>
but a signaltap with a display instead of just to a pc?
<FL4SHK>
Yes
<FL4SHK>
plus, I might expand the GPU later for a SNES ish game console.
<whitequark>
FL4SHK: another thing to consider for the record split
<tpw_rules>
i saw a thing on twitter recently of someone doing that
<FL4SHK>
I have this monospaced font I drew a few years ago
<FL4SHK>
going to use it for the scope
<tpw_rules>
how big?
<FL4SHK>
8x16
<FL4SHK>
It was originally for a GBA game I was working on
<tpw_rules>
i find that too large. i like a nice 8x6
<tpw_rules>
or 6x8
<FL4SHK>
I've also got an 8x8 font I could use
<lkcl>
FL4SHK: we created nmutil.noperator.cat (similar to python operator module) for pretty much exactly that purpose
<lkcl>
a single line of code to pack records and unpack them.
<lkcl>
you _can_ use nmigen.Cat() directly, however it packs Records as a sequence of bits, and the graphviz becomes more cumbersome to read, the larger the Record
<lkcl>
that's a Record directly into a SyncFIFO - no "manual unpacking" - the Record is assigned directly to the Signal on the FIFO to get the data in, and the other way round to get the data out.
<whitequark>
minerva doesn't actually assign to Cat()
<whitequark>
right
<lkcl>
yes, true. faulty memory, i thought it did.
<lkcl>
i really like Cat(*some_list).eq(something) and vice-versa
<lkcl>
it generates really tidy graphviz output as it centralises the signals being assigned.
<lkcl>
a for-loop bit-level assignment gets... messy as anything (unreadable, unverifiable)
<whitequark>
if the only verification you use is visual examination of netlists i have bad news
<lkcl>
whitequark: of course not. i use it in combination with extensive unit tests, formal correctness proofs and more.
<lkcl>
i remember our conversation from a couple years ago where you mentioned that graphviz does not tell the whole story
<lkcl>
however i cannot count the number of times it saved me from making mistakes in using python-based expressions that expanded into absolutely massive ASTs
<lkcl>
which yosys had absolutely no way of optimising out, due to the complexity
<lkcl>
junior members of the team continue to make that mistake, and i can catch them (and teach them to catch them) by cursory examination of the graphviz output
<lkcl>
(not as a substitute for *other* debugging and design techniques)
<tpw_rules>
are there resources available yet on doing effective unit tests and formal verification with nmigen?
<whitequark>
not really, as far as I know
<whitequark>
the current simulator interface is quite bad for writing testbenches
<whitequark>
the formal verification support is usable but definitely unpolished
<tpw_rules>
hm. i think it's a skill i really need to start on
<lkcl>
tpw_rules: yehh we had to piece it together. things like this
<lkcl>
tpw_rules: we found that if it's a combinatorial block, Asserts and Assumes etc. can be thought of in a similar fashion to python and c++. sort-of.
<whitequark>
though the way i describe it in the language guide only works if you already understand the general idea; a tutorial (to be written) should describe it in much simpler terms first
<lkcl>
interesting. i hadn't actually explicitly realised that i understood that nmigen worked in that "overwriting" fashion.
<lkcl>
i worked it out by deducing the behaviour.
<lkcl>
however i have seen others (junior team members) struggle to understand it
<lkcl>
so it's definitely worthwhile emphasising in tutorials (and the language guide, like this)
<lkcl>
whitequark: i like the way things refer back to each other in lang.html.
<lkcl>
so when reading about "assignment order" it links back to "active and inactive" at a relevant context point.
<lkcl>
it works well
<lkcl>
ok - it works well for me :) i can see how someone new might still struggle with this, without a tutorial on the subject.
<lkcl>
robert baruch's tutorial is superb as an introduction but doesn't cover subtle things like this
<whitequark>
there absolutely needs to be a dedicated tutorial, the language guide is something i work on first because it's the foundation of the language. without an authoritative document defining what the behavior should be, there is no difference between a bug and a feature
<whitequark>
(interestingly, it doesn't have to be very "formal", it just has to be clear and unambiguous. the C specification is what people often refer to as "formal" but it leaves a surprising number of details open to interpretation...)
<sorear>
I think automated regression testing for resource usage would be a better idea than trying to vet every commit
<whitequark>
either that or fixing it in the toolchain
<whitequark>
resource usage is one of the things for which a linter is in fact appropriate
<sorear>
what if I _want_ to make a flash ADC?
<whitequark>
what do you mean?
<sorear>
there are some real things that bear a strong resemblance to "someone forgot how loops work in EDSLs"
<whitequark>
oh, sure
<whitequark>
that's why it should be a linter (which you can disable), not a hard error
<whitequark>
a lint*
proteus-guy has quit [*.net *.split]
Lofty has quit [*.net *.split]
Lofty has joined #nmigen
proteus-guy has joined #nmigen
cr1901_modern has quit [*.net *.split]
XgF has quit [*.net *.split]
jordigw has quit [*.net *.split]
alexhw has quit [*.net *.split]
XgF has joined #nmigen
jordigw has joined #nmigen
cr1901_modern has joined #nmigen
alexhw has joined #nmigen
smkz has quit [*.net *.split]
esden has quit [*.net *.split]
chipmuenk has quit [*.net *.split]
rohitksingh has quit [*.net *.split]
q3k has quit [*.net *.split]
_florent_ has quit [*.net *.split]
sorear has quit [*.net *.split]
Ultrasauce has quit [*.net *.split]
chipmuenk has joined #nmigen
esden has joined #nmigen
smkz has joined #nmigen
_florent_ has joined #nmigen
rohitksingh has joined #nmigen
q3k has joined #nmigen
Ultrasauce has joined #nmigen
sorear has joined #nmigen
SpaceCoaster has quit [*.net *.split]
jfng has quit [*.net *.split]
awygle has quit [*.net *.split]
jfng has joined #nmigen
awygle has joined #nmigen
SpaceCoaster has joined #nmigen
levi has quit [*.net *.split]
anuejn has quit [*.net *.split]
trabucayre has quit [*.net *.split]
agg has quit [*.net *.split]
trabucayre has joined #nmigen
levi has joined #nmigen
anuejn has joined #nmigen
agg has joined #nmigen
phire has quit [*.net *.split]
phire has joined #nmigen
sorear has quit [Ping timeout: 260 seconds]
zignig has quit [*.net *.split]
hell__ has quit [*.net *.split]
samlittlewood has quit [*.net *.split]
key2 has quit [*.net *.split]
lethalbit has quit [*.net *.split]
tpw_rules has quit [*.net *.split]
kbeckmann has quit [*.net *.split]
emily has quit [Ping timeout: 244 seconds]
hell__ has joined #nmigen
zignig has joined #nmigen
samlittlewood has joined #nmigen
key2 has joined #nmigen
tpw_rules has joined #nmigen
lethalbit has joined #nmigen
kbeckmann has joined #nmigen
peepsalot has quit [*.net *.split]
FL4SHK has quit [*.net *.split]
ktemkin has quit [*.net *.split]
bubble_buster has quit [*.net *.split]
felix_ has quit [*.net *.split]
FL4SHK has joined #nmigen
peepsalot has joined #nmigen
bubble_buster has joined #nmigen
ktemkin has joined #nmigen
felix_ has joined #nmigen
d1b2 has quit [*.net *.split]
miek has quit [*.net *.split]
sorear has joined #nmigen
miek has joined #nmigen
d1b2 has joined #nmigen
electronic_eel has quit [*.net *.split]
PyroPeter has quit [*.net *.split]
rattboi has quit [*.net *.split]
nurelin has quit [Ping timeout: 246 seconds]
d1b21 has joined #nmigen
sorear has quit [*.net *.split]
daveshah has quit [*.net *.split]
mithro has quit [*.net *.split]
futarisIRCcloud has quit [*.net *.split]
RaYmAn has quit [*.net *.split]
Stary has quit [*.net *.split]
TD-Linux has quit [*.net *.split]
PyroPeter has joined #nmigen
electronic_eel has joined #nmigen
rattboi has joined #nmigen
daveshah has joined #nmigen
Stary has joined #nmigen
mithro has joined #nmigen
RaYmAn has joined #nmigen
sorear has joined #nmigen
TD-Linux has joined #nmigen
futarisIRCcloud has joined #nmigen
mithro has quit [Max SendQ exceeded]
d1b2 has quit [Remote host closed the connection]
plaes has quit [*.net *.split]
Ekho has quit [*.net *.split]
ronyrus has quit [*.net *.split]
pdp7 has quit [*.net *.split]
Cynthia has quit [*.net *.split]
ananan has quit [*.net *.split]
d1b21 is now known as d1b2
jaseg has quit [*.net *.split]
guan has quit [*.net *.split]
gravejac has quit [*.net *.split]
ianloic has quit [*.net *.split]
whitequark has quit [*.net *.split]
loxodes has quit [*.net *.split]
Ekho has joined #nmigen
plaes has joined #nmigen
ananan has joined #nmigen
pdp7 has joined #nmigen
ronyrus has joined #nmigen
Cynthia has joined #nmigen
Ekho has quit [Max SendQ exceeded]
Ekho- has joined #nmigen
jfng has quit [Remote host closed the connection]
whitequark has joined #nmigen
loxodes has joined #nmigen
ianloic has joined #nmigen
jaseg has joined #nmigen
gravejac has joined #nmigen
guan has joined #nmigen
futarisIRCcloud has quit [Ping timeout: 244 seconds]
Cynthia has quit [Ping timeout: 252 seconds]
MadHacker has quit [*.net *.split]
vup has quit [*.net *.split]
vup has joined #nmigen
MadHacker has joined #nmigen
cr1901_modern has quit [Quit: Leaving.]
vup has quit [Max SendQ exceeded]
vup has joined #nmigen
cr1901_modern has joined #nmigen
Cynthia has joined #nmigen
Cynthia has quit [Changing host]
Cynthia has joined #nmigen
guan has quit [Ping timeout: 274 seconds]
guan has joined #nmigen
mithro has joined #nmigen
nurelin has joined #nmigen
peepsalot has quit [*.net *.split]
FL4SHK has quit [*.net *.split]
futarisIRCcloud has joined #nmigen
peepsalot has joined #nmigen
FL4SHK has joined #nmigen
chipmuenk has quit [Quit: chipmuenk]
emily has joined #nmigen
jfng has joined #nmigen
cr1901_modern1 has joined #nmigen
cr1901_modern has quit [Ping timeout: 244 seconds]
Ekho- is now known as Ekho
<_whitenotifier-b>
[nmigen] alanvgreen synchronize pull request #420: Update license and copyright info - https://git.io/JJTYQ
<_whitenotifier-b>
[nmigen] codecov[bot] edited a comment on pull request #420: Update license and copyright info - https://git.io/JJTYN