<qu1j0t3> pie_: Unwarranted and nasty sarcasm aside, though, I've acquired a vintage Fluke DMM that's got a slight fault x_x Another project for a noob
<pie_> woooo~ \o/ xD
<pie_> well now i have another person to look up to
<pie_> unwarranted nasty sjw stuff aside, i could not decide if she was a woman or a man, even though im pretty sure Tatjana is a womans name xD i guess today is just that kind of day
<pie_> qu1j0t3, anyway that stuff is glorious
<qu1j0t3> pie_: Isn't it though!
<pie_> "Verbalisations tend to exclude reality.
<pie_> Just look, maintaining internal silence, until the meaning of my work becomes clear."
<pie_> " Tatjana built this ocilloscope in 1958. She was only 14 years old. An interest in scientific instruments was established at an early age." wait wait wait
<pie_> my hands are useless :(
<pie_> gotta go learn stuff
<jn__> pie_: we need more camps
<pie_> http://www.craftsmanshipmuseum.com/alphalist.htm i feel like one is not just born with these skills but i dunno how to learn :.
<pie_> would also be nice to yknow, have tools.
scrts has quit [Ping timeout: 260 seconds]
<pie_> qu1j0t3, kinda sucks how theres only pictures though
specing has quit [Read error: Connection reset by peer]
azonenberg_work has quit [Ping timeout: 260 seconds]
promach__ has joined ##openfpga
promach__ has quit [Client Quit]
scrts has joined ##openfpga
pie_ has quit [Remote host closed the connection]
pie_ has joined ##openfpga
m_w has quit [Quit: leaving]
DingoSaar has quit [Remote host closed the connection]
DingoSaar has joined ##openfpga
oeuf has quit [Read error: Connection reset by peer]
DocScrutinizer05 has quit [Disconnected by services]
DocScrutinizer05 has joined ##openfpga
digshadow has quit [Ping timeout: 240 seconds]
oeuf has joined ##openfpga
<rqou> offtopic question: can somebody explain to me what exactly a debian "binNMU" is?
<rqou> debian documentation doesn't seem to make much sense unless you already know how everything works
_whitelogger has joined ##openfpga
theMagnumOrange has joined ##openfpga
theMagnumOrange has quit [Max SendQ exceeded]
theMagnumOrange has joined ##openfpga
scrts has quit [Ping timeout: 255 seconds]
scrts has joined ##openfpga
scrts has quit [Ping timeout: 248 seconds]
indy has quit [Ping timeout: 258 seconds]
indy has joined ##openfpga
digshadow has joined ##openfpga
scrts has joined ##openfpga
<eduardo__> rqou: no problem. Lets see in one year how things go when you are done with your master.
scrts has quit [Ping timeout: 260 seconds]
scrts has joined ##openfpga
cr1901 has quit [Ping timeout: 246 seconds]
cr1901 has joined ##openfpga
JSharp is now known as jaesharp
jaesharp is now known as JSharp
awygle has joined ##openfpga
<awygle> whew. moved. in the sense that my worldly possessions are piled in a corner of this (quite nice) apartment and i can only access the internet through my phone.
awygle has quit [Ping timeout: 260 seconds]
cr1901_modern has quit [Read error: Connection reset by peer]
specing has joined ##openfpga
teepee has quit [Ping timeout: 245 seconds]
teepee has joined ##openfpga
Marex has quit [*.net *.split]
brizzo has quit [*.net *.split]
wolfspraul has quit [*.net *.split]
teepee has quit [Ping timeout: 240 seconds]
teepee has joined ##openfpga
promach__ has joined ##openfpga
specing has quit [Ping timeout: 255 seconds]
m_t has joined ##openfpga
promach__ has quit [Quit: Leaving]
Marex has joined ##openfpga
brizzo has joined ##openfpga
wolfspraul has joined ##openfpga
laintree has joined ##openfpga
laintoo__ has quit [Ping timeout: 255 seconds]
coino has quit [Ping timeout: 248 seconds]
digshadow has quit [Ping timeout: 248 seconds]
teepee has quit [Ping timeout: 258 seconds]
teepee has joined ##openfpga
teepee has quit [Ping timeout: 260 seconds]
teepee has joined ##openfpga
scrts has quit [Ping timeout: 260 seconds]
m_t has quit [Quit: Leaving]
scrts has joined ##openfpga
specing has joined ##openfpga
teepee has quit [Ping timeout: 255 seconds]
teepee has joined ##openfpga
<felix_> eduardo__: i wonder if you already have written to the 34c3 assembly team that we want a (open) fpga assembly? there was some email maybe a month ago; if you didn't get that, i could formward it to you
scrts has quit [Ping timeout: 240 seconds]
scrts has joined ##openfpga
DingoSaar has quit [Remote host closed the connection]
DingoSaar has joined ##openfpga
m_w has joined ##openfpga
scrts has quit [Ping timeout: 248 seconds]
scrts has joined ##openfpga
digshadow has joined ##openfpga
digshadow has quit [Ping timeout: 260 seconds]
digshadow has joined ##openfpga
specing has quit [Ping timeout: 276 seconds]
scrts has quit [Ping timeout: 246 seconds]
test123456 has joined ##openfpga
scrts has joined ##openfpga
specing has joined ##openfpga
m_t has joined ##openfpga
<felix_> rqou: hm, seems that this year also a voucher system is used for the congress https://tickets.events.ccc.de/34c3/docs/
coino has joined ##openfpga
* coino o/
<rqou> alright, felix_ please please try to get me a voucher
enriq has joined ##openfpga
<rqou> azonenberg: fun problem: addition is commutative, so individual adder bits can be flipped
<rqou> there probably isn't a good way to tell which signals should be grouped together
<enriq> hello. Ive been told that people here is developing free tools for fpgas here. I was asking at ##fpga about command line tools to program a CPLS, namely the ISE Design Suite
<rqou> hi enriq
<enriq> sorry I meant, namely the Xc9572xl
<enriq> ehllo rqou
<rqou> yes, we're working on some open-source tools, but they're not quite "ready for production" yet
<enriq> and cpld like that one is supported?
<rqou> also, nobody is working on the 9500/9500xl right now. those parts aren't as powerful and are super old
<enriq> this is just "hobby" for me
<rqou> the current work is on the coolrunner-ii
<rqou> is there a particular reason you want to use the 9500xl series?
eduardo_ has joined ##openfpga
<enriq> rqou because I can get it here cheap (I live in argentina), it's more than adequate for my needs
<enriq> but I'll check the coolruuner-ii
<enriq> I'm pretty newbie
<rqou> the major feature that you lose in coolrunner-ii is 5v tolerant IOs
<enriq> I was looking at a "punk" way of programming
<enriq> not that awful 5GB ide
eduardo__ has quit [Ping timeout: 260 seconds]
<azonenberg> enriq: yeah oru tools are a bit smaller than tha t:p
<azonenberg> that*
<enriq> is there a way to code the binary file by hand? is there documentation?
<rqou> if you're insane enough, you can program a cpld directly in a text editor
<rqou> there is no documentation officially
<enriq> I'm fully insane
<rqou> we've reverse engineered how to do it for coolrunner-ii
<enriq> I used to program assembly with hex editor
<pie_> oh god lol
<pie_> .me crying
* pie_ crying
<pie_> we got a real badass over here xD
* pie_ thumbs up
<enriq> haha
<enriq> also old
<azonenberg> I created a coolrunner bitstream by hand in a text editor
<enriq> yeah
<azonenberg> Because i was trying to destroy the chip with internal short circuits
<azonenberg> and no toolchain would emit such a bitstream :p
<azonenberg> (it worked)
<pie_> shit lol
<enriq> I guess is just doing the config matrix of the elements, sort of
<rqou> i think at this point azonenberg and i are the only people outside of xilinx who have created coolrunner-ii bitstreams in a text editor
<enriq> lol azonenberg
<enriq> THAT is punk ;)
<pie_> azonenberg, you need spiky green hacker hair now
X-Scale has joined ##openfpga
<enriq> there is this coolrunner thing related to xbox hacking, but nothing to do with this coolrunner right?
<rqou> ugh, this again
<rqou> :P
<enriq> sorry
<openfpga-github> [yosys] azonenberg pushed 3 new commits to master: https://git.io/v71or
<openfpga-github> yosys/master bc9380b Andrew Zonenberg: Merge https://github.com/cliffordwolf/yosys
<openfpga-github> yosys/master 007f29b Clifford Wolf: Add support for set-reset cell variants to opt_rmdff
<openfpga-github> yosys/master 1597019 Clifford Wolf: Auto-detect JSON front-end
<enriq> newbie
<rqou> yes, that xbox hack uses a coolrunner-ii
<azonenberg> enriq: there are a lot of xbox modchips using these cplds
<enriq> it does???!
<enriq> oh I just buy that and reprogram?
<enriq> it's really cheap
<rqou> that's what all the ebay "xc2c64a dev boards" are for
<azonenberg> They usually ship blank, i think
<azonenberg> you're supposed to flash it yourself with a modchip bitstream
<azonenberg> But there's no reason you can't use somethign else
scrts has quit [Ping timeout: 255 seconds]
<azonenberg> As of now our toolchain is mostly being tested on the xc2c32a and the modchips are usually a 64a
<azonenberg> but we will support the 64 eventually
<enriq> I feel like in the right place :)
inode has joined ##openfpga
<balrog> enriq, azonenberg: I'm rather interested in xc9k because it's extremely common in legacy applications
<rqou> yeah, that modchip looks about right
<balrog> so good RE tools would be nice for it
<rqou> sure, but i don't feel like writing the tool to go in the forward direction
<azonenberg> rqou: lol
<balrog> rqou: I don't disagree ;)
scrts has joined ##openfpga
<azonenberg> this is where we are with the 32a bitstream RE - effectively done
<rqou> unless you want to solve the "how to place P-terms effectively without blocking other macrocells" problem
<azonenberg> we're still working on the toolchain stuff
<rqou> fixed OR arrays suck
<balrog> ahh, xc9 is fixed-or?
<rqou> yup, most cplds seem to be fixed-or
<rqou> but it has "p-term steering/stealing"
<rqou> with a really complicated diagram to explain how to do that
<balrog> oh, that
<balrog> so it can "borrow" p-terms from unused cells?
<enriq> rqou I'll ask which chip the board has. Which one has to be?
<felix_> rqou: i'll see what i can do. other question is if eduardo_ (or someone else) also tries to get a voucher for the project; it's not that likely that we get two or more replicating vouchers
<enriq> you say that it looks like the correct one?
<rqou> enriq: right now the tools aren't ready yet, but xc2c64a will probably be added soon
<azonenberg> enriq: as of now the two most developed backends for our project are Silego GreenPAK4 and Xilinx CoolRunner-II, with the most fully supported chips being the slg46620/slg46621 and xc2c32a
<azonenberg> We have to figure out one ROM on the 64a to support it, then do a bit of coding
<rqou> enriq: from what i've seen, most xbox modchips are an xc2c64a, but some are an xc2c128
<rqou> they're both coolrunner-ii
<enriq> so apt for these tools
<enriq> good
* enriq downloads and buys
<rqou> balrog: yeah, it can borrow p-terms from unused cells, but only in some cases and not other cases
test123456 has quit [Quit: Leaving]
<rqou> and then the timing calculations get really complicated
<rqou> because going through the mux is often slower
<balrog> yup
<rqou> also, interestingly, afaict the 9500 and 9500xl are different
<rqou> but we don't know how exactly
<balrog> any decaps of either/both?
<balrog> anyone compared bitstreams?
<rqou> yeah, the bitstreams for the 9500/9500xl don't have any hints/comments
<rqou> unlike XPLA3/coolrunner-ii bitstreams
<rqou> decaps aren't likely to be that necessary
<rqou> CPLDs tend to be pretty simple. it's just that nobody has spent the time to work on it
<rqou> e.g. coolrunner-ii .jed files have comments like 'Note Block 0 PLA AND array *'
digshadow has quit [Ping timeout: 276 seconds]
<rqou> whereas xc9500xl bitstreams are just several thousand lines of 'L0000000 00000000 00000000*'
digshadow has joined ##openfpga
<azonenberg> balrog: i have decaps and top metal images
<enriq> the tools compile on linux right?
<balrog> azonenberg: are they on sipr0n?
<rqou> our tools compile on linux but also work on mac/windows
<rqou> er, i guess they compile on mac too
<azonenberg> Everything but the 288
<rqou> they don't compile on windows, but they run on windows (cross-compiled)
<balrog> any non-xl?
<azonenberg> balrog: yeah a few, let me see
<enriq> I'll try on ubuntu first
* enriq organizes a party
<enriq> this is a great day
<azonenberg> https://siliconpr0n.org/archive/doku.php?id=mcmaster:xilinx:xc9572-pq100asj9805
<rqou> don't get your hopes up enriq, it isn't really usable yet
<balrog> the most usable open toolchain would be the one for lattice iCE40
<azonenberg> balrog: and then https://siliconpr0n.org/archive/doku.php?id=azonenberg:xilinx:xcr3064xl an xpla3
<rqou> i've got an xc95288xl here, but azonenberg told me not to mail it to him :P
<azonenberg> rqou: the greenpak toolchain is pretty usable unless you want to use the ADC or counter cascading
<azonenberg> or one or two odd clock tree configurations
<enriq> but I can text edit
<enriq> how do I learn to text edit programming of coolrunners?
<rqou> you sit down in real life with me and azonenberg so that we can explain it :P
<rqou> yeah, sorry there isn't any good documentation right now
<azonenberg> rqou, enriq: there's that text file i linked
<rqou> you probably want to start by reading the official datasheet which explains how the architecture works in general
<azonenberg> if you're crazy enoguh and have time that plus the datasheet should be enough for you to figure it out
<rqou> and then there's that text file
<azonenberg> Yes, reading the datasheet thoroughly is a must
<rqou> and finally, for now, you need to illegally obtain one particular file from xilinx ISE
<rqou> for the 64a
<rqou> for the 32a this isn't necessary
<azonenberg> rqou: you mean the zia rom?
<rqou> yeah
<azonenberg> yeah, i really need to go delayer one and sem image
<azonenberg> so we have a clean copy of that data
<enriq> but xilnix ise is free anyway no?
azonenberg_work has joined ##openfpga
<rqou> yes, but there are legal issues with copying that file
<balrog> it's free to use, not free to copy or redistribute
<balrog> there are differences :)
<enriq> I see. I'l turn off the camera
<enriq> yeah this is for my own amusement anyway
<rqou> oh, another thing is that we don't actually have complete code to program a part
<rqou> blame azonenberg :P
<azonenberg> rqou: I have code to program the 32
<azonenberg> i have to double check the 64
<azonenberg> it just isnt in a standalone form
<rqou> i thought you said it was bitrotted or something?
oeuf is now known as egg|egg
<azonenberg> I'll double check but pretty sure i revived it
<azonenberg> actually yes i definitely revived the 32
<rqou> did i mention that we need some way to handle xsvfs yet?
<azonenberg> because i used it to program the 32a in my suicide test
<azonenberg> I'd make an xsvf to crbit converter
<azonenberg> should be easy enough to pull out the offsets
<balrog> azonenberg: lol how did you revive it?
<balrog> is this the one you attempted to fry?
<rqou> unless the xsvf wasn't generated by impact? :P
<azonenberg> i meant the 32 programming code
<azonenberg> not the chip
<azonenberg> the chip is dead, i've been fibbing it down to image lower layers in a few spots
<azonenberg> Have not found a blown part
<azonenberg> (yet)
<rqou> stupid question: is xsvf turing complete?
<enriq> azonenberg you have an example file?
<enriq> I'm reading the txt
<rqou> in my set of tools there's a program that generates an example file
<rqou> but again, there isn't any documentation on how to do that :P
<azonenberg> rqou: I think that xsvf is just a binary version of svf
<azonenberg> So maybe we should first convert xsvf to svf, then make tools to import svf
<azonenberg> svf is basically a WMF-esque list of jtag commands
<azonenberg> i do not think it has full branching
<azonenberg> But havent looked in a while
<rqou> unfortunately it doesn't have the comments in it that ISE writes
<azonenberg> enriq: for the jed file format itself, here's the spec http://www.jedec.org/download/search/jesd3c.pdf
<azonenberg> This is only the container file format, not the bitstream
<rqou> azonenberg: so apparently JED doesn't have branches, but STAPL does
<rqou> good thing we're not targetting altera :P
<azonenberg> i've always ignored svf etc files
digshadow has quit [Ping timeout: 248 seconds]
<azonenberg> and worked straight with the bit/jed
<rqou> i guess you can do that too
<rqou> the reason i ask is because when i went looking for "those .jed files" some of them were only available in xsvf format
enriq has quit [Ping timeout: 240 seconds]
<rqou> hey azonenberg troll-y idea: MPSSE-metafile :P
<azonenberg> For RE i'd just make a tool to import it
<azonenberg> Also, that would be stupid easy
<azonenberg> just a binary file of data to send
<azonenberg> no structure or anything
<rqou> now what about importing one? :P :P
<azonenberg> unless you wanted to support readback in which case you'd need a "send x bytes, data follows" and "read x bytes, expected data goes here"
<azonenberg> command
<azonenberg> importing would be a pain in the butt, but doable
<rqou> actually, i have a use case for wanting to import one
<rqou> well, somewhat of a use case
<azonenberg> You could convert one to svf in a fairly straightforward manner
<rqou> suppose i captured usb traffic to a device that has an embedded fpga that is configured via software
<rqou> now you need an MPSSE command decoder
<azonenberg> i'd preferentially pull the bitfile out of the firmware image
<azonenberg> or jtag it off the fpga
<rqou> what if it's only stored as MPSSE commands? i guess that's a bit unusual though
<azonenberg> extremely unlikely
<azonenberg> no tool i am aware of does this
<azonenberg> there is almost certainly a bit or rbt in the host system
<rqou> hmm, any particular reason why?
<azonenberg> it just seems like unnecessarily coupling your file format to the ftdi tools
<azonenberg> vs a [x]svf or jed/bit can be used with anything
<rqou> oh i was thinking a proprietary thing, not a foss thing
<azonenberg> i know
<rqou> i guess Vendors(TM) aren't that clever :P
<azonenberg> but it results in a file you cant use with impact
<azonenberg> or factory ATE
<azonenberg> etc
<azonenberg> if anything i'd expect a mcu image that has the fpga bitfile hardcoded in it somewhere
<azonenberg> as a custom "baked" format
<rqou> so i actually have a device that configures an fpga like this
<rqou> i didn't find the standalone bitfile data, but i also didn't look very hard
<rqou> it's also a non-REd altera fpga
Guest77357 is now known as abetusk
<azonenberg> rqou: Trying to think if there's any rhyme or reason to how to group signals into buses
<azonenberg> Outputs of adders we can assume are a bus for sure, right?
<rqou> probably?
<azonenberg> Also, any adder where one input is constant and one is a variable
<azonenberg> we can group the other input
<azonenberg> Not sure how constant adders get encoded
<rqou> i don't think those even turn into normal adders
<azonenberg> But if we can find them, we can group the other input
<azonenberg> Yeah
<rqou> oh btw i was poking around a bit since balrog asked about 9500 cplds, and i found this hilarious xilinx AR# 8701
<rqou> "Is it possible to extract a design (or logic equations) from a JEDEC file?"
<rqou> "The data in the JEDEC file is encoded in a format that prevents reverse-engineering of the design (or equations)."
<balrog> LOL
<rqou> yeah no
<rqou> :P
<azonenberg> rqou: also can you adder-extract this for me? https://www.jwz.org/blog/2017/08/13249401/#comment-176340
<azonenberg> oops
<azonenberg> inter-VM clipboard fail
<rqou> i see you are also procrastinating :P
<azonenberg> oops let me reupload
<azonenberg> i gave you the wrong json
<rqou> yeah, i noticed this hasn't been unmapped yet
<azonenberg> Re-uploaded
<azonenberg> also hmph something funny is happening in my unmapping maybe?
<azonenberg> need to double check the original logic but P3 is weird
<rqou> abc is magic
<azonenberg> no but i mean
<azonenberg> this is supposed to be [P20:17] + [P16:13] = [P3:6]
<rqou> oh yeah, P3 is messed up somehow
<azonenberg> The MSB is hosed
<rqou> but it's already wrong in the json you gave me
<azonenberg> ooh interesting
<azonenberg> I see the issue, it's on my end somewhere
<azonenberg> GP_4LUT LUT4_0
<azonenberg> is not saving the truth table for some reason
<azonenberg> let me look into that
<rqou> other than that though, abc really is magic
<azonenberg> This is the lut/pgen block
<rqou> and yes, i'm starting to work on the code that will eat up adder chains and turn them into $alu
<azonenberg> so that's hosed somehow
<rqou> also, i noticed a commit supposedly fixing ff optimization for real this time?
* azonenberg forgot to immplement virtual std::map<std::string, std::string> GetParameters() const;
<azonenberg> in Greenpak4PairedEntity
<azonenberg> that would do it
<azonenberg> and yes i merged that to my fork
<azonenberg> go pull latest and test
<rqou> whee, substantially less noise in my blinky_out.v :P
<rqou> it still doesn't get TFFs though
DingoSaar_ has joined ##openfpga
<openfpga-github> [openfpga] azonenberg pushed 3 new commits to master: https://git.io/v71yD
<openfpga-github> openfpga/master aef4e0d Andrew Zonenberg: Created Adder testcase for GreenPAK RE stuff
<openfpga-github> openfpga/master 2c7cdfa Andrew Zonenberg: Merge branch 'master' of github.com:azonenberg/openfpga
<openfpga-github> openfpga/master 2964068 Andrew Zonenberg: Implemented attribute/parameter handling on Greenpak4PairedEntity
<azonenberg> Fix committed, compiling to verify that was my problem
<azonenberg> Also another thing i want to do
<azonenberg> Shift register extraction then techmapping back to buses
<azonenberg> tl;dr right now shregs are mapped to chains of DFFs
<azonenberg> shregmap will turn them into $SHREG cells
<azonenberg> i want to turn them into vector DFFs
<azonenberg> so it looks good in exported HDL
<azonenberg> So i think we can just create a shreg-to-DFFs techmapper and be good?
<azonenberg> Uploaded new addertest.json
DingoSaar has quit [Ping timeout: 240 seconds]
<azonenberg> rqou: ^
<rqou> sec, i'm adding more details to the issue i filed about TFFs
<rqou> clifford isn't happy about how i go and file a bunch of issues without details
<azonenberg> lol
digshadow has joined ##openfpga
<rqou> do other devices have hardware TFFs? or only coolrunner-ii?
digshadow has quit [Ping timeout: 240 seconds]
<azonenberg> I don't think most other so
<azonenberg> they also have hardware DDR FFs in fabric which is unique
<rqou> can ODDR be inferred on FPGAs?
<rqou> or do you have to explicitly instantiate it?
<azonenberg> Never tried, gut feeling is no
<azonenberg> But should be possible to infer if yosys created a ddr ff cell
<rqou> rather than instantly aborting? :P
<azonenberg> Yes, exactly
<azonenberg> want to file a ticket for that? lol
<azonenberg> support for ddr ffs
<rqou> i already did a while ago
<azonenberg> oh?
<azonenberg> #368
<azonenberg> got it
digshadow has joined ##openfpga
digshadow has quit [Ping timeout: 255 seconds]
<rqou> azonenberg: dumb verilog question: if i have an "output reg" can i read from it?
<azonenberg> Yes, it's a reg that happens to be attached to an output port
<azonenberg> you can read it just like a normal reg
<lain> that wasn't the case in vhdl until vhdl-2008 lolol
<rqou> but you can't read an output wire?
<lain> you couldn't read from outputs in vhdl, which is just stupid
<rqou> hilariously enough, i'm not actually very good at writing HDLs
<lain> the workaround was to make a signal, assign the output to that signal, and then you can read/write the signal as usual
<azonenberg> You can read an output wire too in verilog
<azonenberg> outputs are no different from any other signal
<rqou> wait you can?
<azonenberg> they just happen to connect to a port
<rqou> why do i seem to recall this not working?
<azonenberg> VHDL?
<rqou> maybe
<azonenberg> I mean you're going to read the value you are driving
<azonenberg> So if you drive "Z" and the pad is driven by a different value from off chip
<azonenberg> you won't see that
<azonenberg> For that, you want inout
<azonenberg> But you can read the value going into the OBUF
<rqou> btw yosys gets this wrong too
<azonenberg> ??
<rqou> the yosys constant propagation pass seemed to be propagating driven Zs back into the design
<rqou> er, sorry
<rqou> i think it only gets it wrong if you drive a Z constantly
<azonenberg> So if you have inout foo = z
<azonenberg> and read foo
<rqou> (so it's not really an output at all lolol)
<azonenberg> it fails?
<rqou> i think so?
<azonenberg> If you have "output foo = z"
<azonenberg> then it should propagate the z
<azonenberg> because foo has no input buffer
<rqou> yeah
<rqou> so i have
<rqou> module test(inout bidir_port, output out_port);
<rqou> assign bidir_port = 1'bz;
<rqou> assign out_port = bidir_port;
<rqou> endmodule
<rqou> and then i run read_verilog, proc, opt
<rqou> and then both bidir_port and out_port are driven constant z
<azonenberg> Interesting
<rqou> i'm not sure if this is supposed to actually be wrong though?
<rqou> if you think it's wrong, file a bug for me please?
<azonenberg> That looks like an error, it should be propagating the value from bidir_port's ibuf to out_port
<azonenberg> You file it
<azonenberg> i'm busy w/ work
<rqou> are you sure about how this is supposed to work?
<azonenberg> Look it up in the LRM
<azonenberg> But fairly sure this is the proper way to do it
<rqou> the LRM or the .1 addition about synthesizable constructs?
<azonenberg> Both
<rqou> ugh later
digshadow has joined ##openfpga
scrts has quit [Ping timeout: 240 seconds]
azonenberg has quit [Ping timeout: 240 seconds]
azonenberg has joined ##openfpga
scrts has joined ##openfpga
<rqou> oh right azonenberg i forgot about your fixed adder test: http://i.imgur.com/3BsCV9s.png
<rqou> works
<azonenberg> rqou: i notice you inferred an xor3 for the top bit of the adder
<rqou> yeah, because there's no carry-out
<rqou> i'm working on it :P
<azonenberg> I think it would make more sense to say, if you have a xor3 with one input driven by a carry output of a full adder
<azonenberg> create a full adder and leave the carry-out NC
<rqou> yeah, i'm working on it
<rqou> i'm going to do that at the same time i convert the rest of the chain into $alu
<rqou> this step finally involves writing "real code" :P
<azonenberg> That works
<rqou> actually wait
<rqou> ugh
<rqou> $add has no carry-in/carry-out
<rqou> but the verilog backend doesn't understand $alu
<rqou> i guess if there's no carry in, no carry out, and no fanouts on any of the carry wires, i'll generate $add/$sub instead
<azonenberg> Carry in/out is easy
<azonenberg> Well, carry out is easy
<azonenberg> just make the result 1 bit wider
<azonenberg> zero-pad the inputs
<azonenberg> Carry in i can't imagine encountering unless the cell it originated from was a half adder in which case you absorb it into the adder chain
<azonenberg> If it's something else, you just leave them as adder cells or something because they might not have actually been real adders
<azonenberg> just some other logic function that was equivalent to a full adder
<azonenberg> Make sense?
promach has quit [Quit: SuchZNC - Such ZNC, many free, w0w... -- https://suchznc.net]
scrts has quit [Ping timeout: 240 seconds]
scrts has joined ##openfpga
<rqou> hmm, but what about an "actual CPU ALU?"
<coino> is there a way to drive 1,5 GHz memory from 33MHz clock
<rqou> PLLs?
<rqou> although this sounds like a really strange question. what are you trying to do?
<coino> drive GDRR5
<coino> from PSoC
<rqou> that's unlikely to work
<coino> why
<rqou> psoc probably isn't fast enough
<rqou> why are you trying to use gddr5?
<coino> bandwidth
<coino> 200 GB/s
<rqou> but the datapaths in your controller (the psoc in your case) need to have that much bandwidth too
<rqou> i don't think psoc does
<coino> I see
<rqou> what are you building? can you use a more powerful FPGA?
<coino> cryptography hashing
<rqou> a scrypt miner?
<coino> I suppose, GPU are very efficient
<rqou> you almost certainly need an asic to be competitive
<coino> competitive with what
<rqou> with other miners
<coino> nit's not scrypt
<coino> diff algo
<rqou> i thought all cryptocurrency miners were now asics?
<coino> Etash is memory hard
<coino> rqou, no
<rqou> so the "butterfly labs" stuff i've seen die photos of
<rqou> what is that for?
<azonenberg> rqou: sha256
<azonenberg> bitcoin
<azonenberg> it's IBM 65nm iirc
<azonenberg> coino: you're not going to run gddr5 on a psoc
<rqou> zeptobars says TSMC, not IBM
<azonenberg> for starters, most dram (including gddr5) has a minimum refresh frequency
<azonenberg> coino: and if you clock it too slow you'l lspend all your time on refreshes and have none for accessing it
<azonenberg> rqou: which BFL part? there's probably more than one
<azonenberg> https://siliconpr0n.org/archive/doku.php?id=azonenberg:butterflylabs:bfsc100f144
<coino> azonenberg, is it dead end research
<azonenberg> It's IBM 10SF
<rqou> oh sorry, i got it confused with yet some other bitcoin asics
<azonenberg> coino: doesnt matter, if you had a faster FPGA you'd be fine
<azonenberg> but psoc cant get close to that operating freq
<rqou> yeah, you can usually overclock programmable logic, but not _that_ much
<coino> azonenberg, FPGA max operating frequency + GPIO speed?
<azonenberg> coino: max frequency depends on the logic you're running
<azonenberg> But i can assue you that the io toggle rate of a psoc is not above 100 MHz
<azonenberg> assure*
<coino> how do GPU do 200 GB/s
<azonenberg> and you'd need closer to 1 GHz to use GDDRx properly
<azonenberg> coino: first, they have really wide memory buses
<azonenberg> 512+ bit
<coino> not all
<azonenberg> Allowing for address pins etc you're looking at 800+ pins on your chip just to talk to the ram
<azonenberg> The GTX 1080, just to use a random example
<azonenberg> is 320 GB/s memory bandwidth across a 256 bit bus
<coino> 800 io pins
<coino> wow
<azonenberg> Which is 10 Gbps on each of 256 pins
<coino> so like a 10Gbps FPGA with 256 bit bus
<azonenberg> There is no fpga on the market with that many serdes
<coino> seems GPU are very efficient
<rqou> are they actually serdes?
<azonenberg> rqou: I dont know if they do clock recovery
<azonenberg> but they're certainly serializers of some sort
<azonenberg> coino: the biggest virtex ultrascale+ has 128 transceivers, up to 32 Gbps each
<azonenberg> But you can only use 10 Gbps for GDDR5
<rqou> but PHASER_OUT is also a "serializer of some sort"
<azonenberg> rqou: yes but the normal selectio can't do 10 Gbps
<coino> azonenberg, so that ultrascale would be overkill and expsneive
<azonenberg> coino: So, your max bandwidth coming off that chip is 524 GB/s and that goes down to 160 GB/s if you run each of the transceivers at 10 Gbps
<coino> those are expensive chips right
<azonenberg> Lol
<azonenberg> Does that answer your question?
<azonenberg> about 20K USD per chip
<coino> wow
<azonenberg> Best option if you want lots of ram bandwidth on a modern FPGA is probably to just throw lots of DDR4 on there
<rqou> why don't we have FPGAs with HBM/eDRAM yet?
<azonenberg> rqou: i think they're coming out in the next generation
<azonenberg> altera at least is working on them
<coino> whats the point if they cost 20k
<azonenberg> coino: asic prototyping
<azonenberg> Not bitcoin mining :p
<rqou> you can probably get xilinx to knock it down a couple k :P
<azonenberg> So let's see, max GPIOs on a virtex ultrascale is ~1400, call it 1024 bit for your theoretical max DDR4 bus at 2.6 GT/s per pin is 332 GB/s
<coino> azonenberg, is it feasible to to something that is 1/10, 1/100 smaller scale/cheaper
<azonenberg> (allowing some pins for address/control)
<azonenberg> Keep in mind you're talking sixteen sodimms here
<azonenberg> have fun designing that board
<azonenberg> It won't be cheap
<coino> someone suggested using LPDDR3 and optimize for power use instead of speed
<azonenberg> Also, offtopic for this channel
<azonenberg> since certainly nothing supported by an open toolchain at this point has any kind of performance close to that
<rqou> feel free to contribute :P
<coino> i see
<coino> thanks
<azonenberg> Side note i'm impressed
<azonenberg> i did not know GPUs were up to 10gbps per GPIO for RAM yet
<rqou> me neither
<azonenberg> is that single ended you think?
<coino> there are new models with HBM2 coming out
<azonenberg> or something akin to LVDS
<coino> seems like FPGA are way behind
<azonenberg> coino: FPGAs don't sell hundreds of millions of units like GPUs do
<azonenberg> they lack economies of scale
<azonenberg> especially on the high end
<rqou> although from what i've seen xilinx fpgas really are a bit lacking on IO
<azonenberg> the giant ones are nomrlaly only used for asic prototyping
<rqou> worst fpga for io is s6 :P
<coino> yeah, only high budget stuff
<coino> I was looking for ways to make a stand alone device, like a rasp pi
<azonenberg> 512 GB/s
<azonenberg> coino: anything with that kind of ram bandwidth is gonna need a PC-sized power supply
<azonenberg> not a pi
<coino> ah
<azonenberg> rqou: And they go up to 16 GB of capacity
<azonenberg> in package
<azonenberg> wonder how long it'll be till we see x86 chips with integrated HBM as like an L4 cache?
<rqou> we already have eDRAM
<azonenberg> for x86?
<rqou> yeah
<azonenberg> o_O
<coino> interesting re power supply
<rqou> some mobile SKUs have it for the GPU
<rqou> iirc they're branded "Iris Pro"
<azonenberg> oh for the gpu
<coino> although I was thinking something in smaller scale
<azonenberg> i meant for the cpu
<rqou> it might be shared?
<azonenberg> but i guess even with that crazy aggregate bandwidth
<azonenberg> you still have the same DRAM latency issues we've had for decades
<azonenberg> dram is slow ;p
<azonenberg> you can read a lot in parallel but random access still sucks
<rqou> yeah, it's hilarious to look at the activate/precharge timings in absolute time rather than clocks or whatever
<rqou> zero change
<coino> what mem is good for rand access
<azonenberg> um, sram?
<azonenberg> QDR-II+, say - be prepared to pay $50ish for a few megabytes
<azonenberg> And dedicate a couple hundred pins of your chip to it
<azonenberg> 36 bit read and write bus at say 800 MT/s
<coino> ouch
<azonenberg> then address
<azonenberg> oh and it eats power too
<azonenberg> there's a reason dram is what everyone uses for large memory arrays
<coino> so, just using high bandwidth means forget low power
<azonenberg> 1 vs 6 transistors per bit cell
<azonenberg> Yeah
<coino> someone suggested optimizing for power with LPDDR3
<coino> instead of speed
<azonenberg> I dont think any COTS thing will beat GPUs for bandwidth
<rqou> oh btw yesterday i was procrastinating and looking into some retro-dev stuff
<coino> yeah, my research shows the same
<rqou> azonenberg: did you know MRAM is available as an "actual product" you can buy?
<azonenberg> And with GPUs, the core is fast enough that if you don't code your stuff well
<azonenberg> you still spend all of your time waiting on ram :p
<rqou> and it's both faster and cheaper than FRAM
<azonenberg> caching matters a ton on gpus
<azonenberg> Efficient design of memory access patterns is like #1 way to speed up GPU stuff
<azonenberg> ideally, prefetch the surrounding region of the image being processed (say) before you need it
<azonenberg> so it's already in cache / shared ram when you want to read it
<coino> could you in theory make a cluster of chips that share memory
<azonenberg> You mean a cluster of gpus?
<coino> hmm well no
<azonenberg> oops wrong one
<coino> but it seems COTS CPLD/FPGA fast enough is expensive
<azonenberg> Tianhe-2 used xeon phi
<azonenberg> also most big stuff is message passing, not shared memory
<azonenberg> shared mem scales very poorly
<coino> Etash algo is a memory hard algo
<coino> makes it ASIC resistant because it forces a time-memory ratio worse than 1:1
<coino> that's why GPU are good, with 200Gb/s
<azonenberg> So give up and use gpus like everyone else?
<coino> well sure
<coino> but what's the fun in that
<azonenberg> Or use real money :p
<coino> :)
<coino> real money instead of monopoly money?
<azonenberg> instead of magic computer money that costs as much in electricity to produce as it's worth
<azonenberg> If you're lucky
<azonenberg> Don't forget the power bill of your air conditioner
<coino> azonenberg, that was one of the motivations
<coino> a smaller scale device
<coino> that could run on less power
<azonenberg> So you want something that uses $100 instead of $1000 a month
<azonenberg> to produce $50 instead of $500 of magic computer money
<coino> doesn't seem feasible tho
<azonenberg> I fail to see the point
<coino> you mean unless it's more efficient
<coino> I suppose this is where ASIC come into play
<cr1901> azonenberg (when you get the chance): What are the synthesis semantics of assigning an initial value to a Verilog reg _without_ using an "initial" statement later to assign the value?
<azonenberg> cr1901: reg[3:0] foo = 4'ha;
<cr1901> yes exactly
<azonenberg> just like declaring + initializing a variable in C
<cr1901> then what is the "initial" keyword for in the context of "initial reg[3:0] foo = 4'ha;"
<cr1901> or "initial foo = 4'ha;"
* cr1901 doesn't remember which is legal
<azonenberg> the former is, i think, not legal
<azonenberg> the latter is initializing ,but not declaring
<azonenberg> you still have to declare foo
<azonenberg> so you could do reg[3:0] foo; initial foo = 4'ha;
<rqou> azonenberg: you're forgetting about default net types :P
<azonenberg> rqou: if you ever write RTL that relies on a default net type
<azonenberg> get lost :p
<cr1901> Interesting that it requires a keyword to initialize after declaring...
<cr1901> in any case, Verilog is confusing, example #4987
<azonenberg> cr1901: So, that's actually a shortcut for
<azonenberg> initial
<azonenberg> foo = 4'ha;
<azonenberg> Which is a shortcut for
<azonenberg> initial begin
<azonenberg> end
<azonenberg> foo = 4'ha;
<azonenberg> all assignments in verilog must be in either a "initial" or "always" block
<cr1901> Ahhh okay, now it makes sense. They just allow that shortcut for convenience
<azonenberg> It's a side effect of the begin/end "curly braces" being optional for a single-statement block, just like in C
<azonenberg> and the newline vs whitespace being treated the same by the parser
<azonenberg> same way you could say if(foo) bar=1;
<azonenberg> in C
<cr1901> Ohh, right I forgot about that
<cr1901> mainly b/c I don't rely on that shortcut in my own code (and it's kinda pet peeve when I see it in others)
<azonenberg> i always initialize regs in the declaration or not at all
<azonenberg> the only exception is if i need a loop or something to fill a 2D array
<cr1901> azonenberg, so Idk if you've seen the orconf presentation on yosys, but it has this example >>
clifford has quit [Ping timeout: 240 seconds]
<cr1901> I just lost about 18 hours (on and off) because I didn't recognize that the initial value was 0
<azonenberg> Waaait
<azonenberg> why is cnt commented out
<cr1901> oops
<cr1901> that was me testing something
<cr1901> ignore the comment, sorry :P
<azonenberg> Lol
m_t has quit [Quit: Leaving]
<cr1901> B/c there was no initial next to "cnt"'s declaration, I implicitly assumed it was ignored, not realizing the "initial" was implicit
<cr1901> (And yes, commenting cnt out does make BMC fail)
<jn__> [slightly off-topic] hmm, "Cadence's QuickTurn emulation system is a Solaris-based chip emulation system" (source: a patch from nvidia in ARM Trusted Firmware). interesting that there are still commercial products that run on Solaris
<rqou> maybe it's solaris x86?
<jn__> possibly
DocScrutinizer05 has quit [Disconnected by services]
DocScrutinizer05 has joined ##openfpga
<cr1901> azonenberg: I've been reading this book the past few nights. I highly recommend it: https://twitter.com/thepracticaldev/status/720257210161311744?lang=en
<azonenberg> lolol
<cr1901> The Kitten Book belongs in every engineer's reperitoire (sp)
<jn__> this book cover looks rather more peaceful than "shotgun debugging" :)
<cr1901> Can't seem to find that cover
<cr1901> I mainly bought the book for the kitten on the front
scrts has quit [Ping timeout: 276 seconds]
scrts has joined ##openfpga
specing has quit [Read error: Connection reset by peer]
<rqou> huh
<rqou> i didn't realize youtube had a different error handling system from the rest of google
<rqou> it gives an error page with a huge dump of base64