azonenberg changed the topic of ##openfpga to: Open source tools for FPGAs, CPLDs, etc. Silicon RE, bitfile RE, synthesis, place-and-route, and JTAG are all on topic. Channel logs: https://libera.irclog.whitequark.org/~h~openfpga
Degi_ has joined ##openfpga
Degi has quit [Ping timeout: 258 seconds]
Degi_ is now known as Degi
uovo has quit [Ping timeout: 258 seconds]
oeuf has quit [Ping timeout: 240 seconds]
uovo has joined ##openfpga
oeuf has joined ##openfpga
uovo has quit [Ping timeout: 272 seconds]
uovo has joined ##openfpga
uovo has quit [Ping timeout: 265 seconds]
oeuf has quit [Ping timeout: 272 seconds]
uovo has joined ##openfpga
promach[m] has quit [Write error: Connection reset by peer]
whitequark has quit [Read error: Connection reset by peer]
jevinskie[m] has quit [Read error: Connection reset by peer]
emilazy has quit [Read error: Connection reset by peer]
oeuf has joined ##openfpga
promach[m] has joined ##openfpga
emilazy has joined ##openfpga
whitequark has joined ##openfpga
jevinskie[m] has joined ##openfpga
promach[m] has quit [Quit: node-irc says goodbye]
whitequark has quit [Quit: node-irc says goodbye]
emilazy has quit [Quit: node-irc says goodbye]
jevinskie[m] has quit [Quit: node-irc says goodbye]
oeuf has quit [Ping timeout: 252 seconds]
oeuf has joined ##openfpga
emeb_mac has quit [Quit: Leaving.]
promach[m] has joined ##openfpga
whitequark has joined ##openfpga
jevinskie[m] has joined ##openfpga
emilazy has joined ##openfpga
promach[m] has quit [Quit: Client limit exceeded: 20000]
whitequark has quit [Quit: Client limit exceeded: 20000]
emilazy has quit [Quit: Client limit exceeded: 20000]
jevinskie[m] has quit [Quit: Client limit exceeded: 20000]
promach[m] has joined ##openfpga
emilazy has joined ##openfpga
whitequark has joined ##openfpga
jevinskie[m] has joined ##openfpga
emilazy has quit [Quit: Client limit exceeded: 20000]
whitequark has quit [Quit: Client limit exceeded: 20000]
promach[m] has quit [Quit: Client limit exceeded: 20000]
jevinskie[m] has quit [Quit: Client limit exceeded: 20000]
tokomak has joined ##openfpga
promach[m] has joined ##openfpga
emilazy has joined ##openfpga
whitequark has joined ##openfpga
jevinskie[m] has joined ##openfpga
whitequark has quit [Remote host closed the connection]
emilazy has quit [Remote host closed the connection]
jevinskie[m] has quit [Remote host closed the connection]
promach[m] has quit [Remote host closed the connection]
promach[m] has joined ##openfpga
emilazy has joined ##openfpga
whitequark has joined ##openfpga
jevinskie[m] has joined ##openfpga
specing_ has joined ##openfpga
specing has quit [Ping timeout: 258 seconds]
specing_ is now known as specing
<pie_bnc> heh
<pie_bnc> > common plastics _are_ polymerized oil so separating the two is nontrivial.
* pie_bnc facepalms
<pie_bnc> true
<pie_bnc> otoh I imagine there are differences between crude oil and vegetable oil
<sorear> definitely, but also I don't know the details of the type of plastic, the type of oil, or how it was polymerized
uovo has quit [Ping timeout: 252 seconds]
pie_bnc is now known as pie_
uovo has joined ##openfpga
unkraut has joined ##openfpga
<pie_> On an unrelated note, my university handed out some kinda nice glass water bottles, says made in china on the bottom (surprise) - the cap smells moderately like plastic (probably not glue?)
<pie_> should I drink from it? xD
<pie_> My reasoning is that if you can smell something it's obviously releasing _something_
<pie_> the question is whether that's relevant
<pie_> (* the cap is plastic and some stainless steel as far as I can tell)
<qu1j0t3> pie_: probably fine ;-)
<qu1j0t3> pie_: glass is nice
<pie_> Id say hooray for glass being easy to clean (and presumably, generally chemically inert), but its opening is pretty small so cleaning is gonna be eh...
<pie_> more on-topic, I was giving some friends a lecture the other day when one of them asked "but ...how do you make `if`?" (as in the C programming language construct), which is a reasonable question and mysterious when youre new
<pie_> we were at it for an hour or two because they had never seen an assembly program IIUC, but I basically reduced it to "it gets translated to `ifs` you have availible as assembly instructions"
<qu1j0t3> yeah
<qu1j0t3> it's been a while but i remember how baffling such questions were to me
<qu1j0t3> for many years compilers just seemed like black magic
<qu1j0t3> i even remember in my first few months exposure to BASIC i didn't know you could even loop
<pie_> yeah definitely. still seems like black magic to me but some progress is being made :D
<pie_> hehe
<qu1j0t3> man, i would love to teach this stuff
<pie_> so anyway then I was going to explain how a CPU implements a conditional jump instruction, because until you do that its all tautological right?
<qu1j0t3> teaching assembler would be fun for me
<qu1j0t3> especially embedded
<pie_> and then I realized I cant give a coherent explanation on it
<qu1j0t3> yeah you end up having to just explain it's "the computer is going down this list of things and carrying it out"
<qu1j0t3> imperative model
<pie_> i did some fumbling explaining whaat an instruction pointer is
<qu1j0t3> yes, that's a necessary concept really
<pie_> and that (conceptually) there are units in the processor for each instruction
<qu1j0t3> i would teach all this TOGETHER with assembly language
<qu1j0t3> e.g. MIPS
<qu1j0t3> "How would you add two numbers?"
<qu1j0t3> "How would you do something ten times?"
<qu1j0t3> etc
<qu1j0t3> "How would you print out a string [given some mild context about I/O]?"
<qu1j0t3> then you reach a point where
<qu1j0t3> "Assembler looks really tedious doesn't it"
<qu1j0t3> "What if... we could write in a simpler way..."
<sorear> "block IF is implemented in terms of logical IF/GOTO"
<pie_> i did that in basically some order of "whats assembly language, instruciton pointer, whats a jump instruction, programs as data, whats a decoder, what are registers"
<pie_> (having to loop back and forth a few times to bootstrap)
<qu1j0t3> yes
<qu1j0t3> that's a lot of new concepts at once lol
<sorear> question of course of how much comp arch people need to know
<qu1j0t3> right
<pie_> well one of the guys was a food engineer, so none? :D the other was a physicist who was /mildly/ interested, the third was the compsci guy that asked
<pie_> (students)
<pie_> but anyway the "how does even `if`" still basically applies to asm, and modulo the above, i dont know how to answer that (well)
<pie_> obviously theres some comparator gateware that does your check of the status register or whatever, and then something that loads new data into the instruciton pointer
<pie_> but thats all I can come up with
<sorear> if you're executing instructions one at a time, you have PC register, and the input to that is determined by (is_a_branch && taken) ? destination : pc + "4"
<qu1j0t3> pie_: i think your terminology can be simplified
<qu1j0t3> pie_: also maybe i'm visually biased, but walking through a short assembler program on a whiteboard would seem to be helpful
<pie_> qu1j0t3: that would have certainly been warranted as opposed to doing everything verbally but i *think* they got the ideas
<qu1j0t3> pie_: but i honestly think you can't start with "how does IF work", it should be part of a general understanding of assembler
<qu1j0t3> "how does ANYTHING work, lol"
<pie_> yeah, but I think it's possible to get a rough idea of how one thing works?
<sorear> duct tape and prayers
<qu1j0t3> pie_: e.g. i don't think you need to mention "decoders" or "comparators" at first
<qu1j0t3> sorear: :D
<pie_> to be fair I didnt ask any comprehension check questoins :P
<pie_> qu1j0t3: well the decoder thing was me trying to explain the code as data thing
<qu1j0t3> i am not even sure that matters at first either
<qu1j0t3> "Here's a program at the level the CPU understands directly"
<pie_> but jumping to an arbitrary memory address doesnt make sense otherwise
<pie_> to be fair, they probably wouldnt have noticed
<qu1j0t3> it does if you're looking at a list of instructions
<qu1j0t3> i.e. you don't teach the generality first, you teach in a sandbox first
<pie_> mm
<sorear> if you have a harvard arch you don't need a decoder, just pretend that there's an array of opaque instructions somewhere
<qu1j0t3> ^^ that
<pie_> thats the one with separate memory and data?
<pie_> yeah I probably could have done that but didnt, basically accidentally
<qu1j0t3> it's okay you did great anyway
<qu1j0t3> these are just suggestions
<pie_> I dont have experience with harvard arch so it was probably a familiarity thing
GenTooMan has quit [Remote host closed the connection]
GenTooMan has joined ##openfpga
<pie_> the harvard arch has its own complexity where you have to explicitly differentiate between code and data? either way you have to take a small detour through some manner of memory addressing semantics
<pie_> (to the extent of a couple sentences)
<pie_> mind you i have like zero didactic experence
<pie_> I did think of grabbing my laptop but that would probably not have worked well so I stuck to the verbal stuff
<sorear> you can pretend instructions don't have addresses until you're doing control flow
<pie_> whiteboard may have worked but Im no good at the whiteboard (yet?) - or at least I don't think I could have done any manner of good job YOLOing diagrams
<sorear> wonder if it helps to be explicit that the simplified model is basically just the 1947 EDSAC
<pie_> sorear: right, but thats basically what we were doing discussing something like jnz
<pie_> (i used some made up jnz)
<pie_> bbiab
<qu1j0t3> BBIAB #100, R4
<pie_> xD
unkraut has quit [Remote host closed the connection]
emeb has joined ##openfpga
Miyu has joined ##openfpga
hackkitten has quit [Ping timeout: 256 seconds]
Miyu is now known as hackkitten
unkraut has joined ##openfpga
tokomak has quit [Read error: Connection reset by peer]
emeb_mac has joined ##openfpga
specing_ has joined ##openfpga
specing has quit [Ping timeout: 272 seconds]
specing_ is now known as specing
esden has quit [Read error: Connection reset by peer]
esden has joined ##openfpga
rektide_ has quit [Remote host closed the connection]