Sunday, 2021-10-10

lkclVeera[m], i updated symbiflow-install to include buster-backports and to install fpga-something from the github repo11:22
lkclit's no longer in pypi11:22
lkclwhich is really odd11:22
lkclhoo-boy the build takes ages :)11:22
lkclMaciejPijanowski, hi. you got my email to leads@3mdeb.com? going well - we should talk. NLnet asked us not to make announcements yet11:23
lkclghostmansd[m], ^11:24
VeeraHi12:47
Veeralkcl: Are you available12:47
cesarlkcl: python ~/src/soc/src/soc/simple/test/test_issuer.py13:03
cesar  File "/home/cstrauss/src/soc/src/soc/fu/alu/main_stage.py", line 16, in <module>13:03
cesar   from ieee754.part.partsig import PartitionedSignal13:03
cesarImportError: cannot import name 'PartitionedSignal' from 'ieee754.part.partsig' (/home/cstrauss/src/ieee754fpu/src/ieee754/part/partsig.py)13:04
Las[m]We need CI.13:13
lkclVeera, i've a stack of changes i'm in the middle of13:25
Veeralkcl: I need review with symbiflow-install ( I have read the bugzilla mails)13:26
lkclVeera, done13:26
lkclhttps://git.libre-soc.org/?p=soc.git;a=commitdiff;h=dd84c610a68a556eb532cee133df68c4354dbf3213:27
lkclgit pull soc13:27
lkclVeera, i've run it, and there's still errors13:28
lkclhttps://bugs.libre-soc.org/show_bug.cgi?id=65413:28
lkcli corrected buster-backports (added that) and fpga-interchange13:28
Veerapython-fpga-interchange is git clone done at start of script13:29
lkclyes but it's not then actually installed13:30
lkclit's installed with "pip3" which fails13:30
lkclsee the commit diff13:30
lkclhttps://git.libre-soc.org/?p=dev-env-setup.git;a=commitdiff;h=9acff23d8e121186233b1daafaba1645f910ae8e13:30
lkcl^^^13:30
VeeraIn talos machine they are passing13:33
Veeragit commit 1959b40e998db987c604c0a75664ccb209df13f713:34
lkcli need to re-run it13:35
lkclahh but the talos machine is based on debian-testing13:35
lkcl(it has to be)13:35
lkclbtw don't for goodness sake under any circumstances run "apt-get upgrade" on it13:35
lkclcreate a chroot and use that13:35
lkclinside a chroot you can do whatever13:36
Veeraconda lock is on git commit 5004f1c19e9f0bd9f87447502770b65a367878c713:36
lkclthat doesn't make much sense to me13:37
Veeraon talos machine I am using debootstrap for clean env13:37
lkcli'm going to blow away the chroot's /home/lkcl/src directory and re-run it13:37
lkclok whew13:37
lkclexcept the assumption of the script was that you manually add buster-backports13:38
lkclwhich i hadn't done, i ran the standard mk-deb-chroot script13:38
lkcland adding buster-backports is *not* part of that13:38
lkclso i added it13:38
lkclthat gave the right version of cmake13:38
Veeraconda lock: in symbiflow-arch-defs there is this file conda_lock.yml13:38
Veeraconda lock: in this valid versions are there which are known to work13:39
lkcli've set it running again, it'll take a few hours, i'll let you know what happens13:39
Veeralkcl: in the script apt-get upgrade -y is to be used or not13:43
lkclVeera, answer is there already. https://bugs.libre-soc.org/show_bug.cgi?id=654#c1813:53
lkcland it's already taken care of13:53
lkcli've already made the two modifications required that answer comment 18 and 19.13:53
lkclno further action need be taken13:53
lkclre-running the script, vpr is currently being built13:54
lkclit's much quicker because ccache is being used13:54
lkclso shouldn't take 3 hours this time13:54
lkclVeera[m], script completed, exact same error15:21
lkclOSError: File not found: /home/lkcl/src/symbiflow/symbiflow-arch-defs/env/conda/envs/symbiflow_arch_def_base/share/vtr/rr_graph_uxsdcxx.capnp15:21
ghostmansd[m]lkcl: sorry for the long absence, got a lot with regular work15:28
ghostmansd[m]I have no idea what you mean, I don't belong to 3mdeb-leads list :-)15:29
ghostmansd[m]Speaking of our roadmap, I recall we stopped at updating the wiki with CSV, and also writing a test which makes use of this CSV as well, right?15:30
lkclghostmansd[m], no problem15:31
lkclyes.15:31
lkcli've done some examples15:31
ghostmansd[m]Ok, will take a look today15:31
lkclthey look great, and i was able to confirm that the function you wrote is correct15:31
lkclalthough i recommended removing one redundant call15:31
lkclit's now a one-liner15:32
ghostmansd[m]In the end of November, I'll have a vacation, which means I can dedicate more time :-)15:32
ghostmansd[m]Ack15:32
lkclfunfunfun15:32
lkclerr aren't holidays supposed to be, y'know... holidays?15:32
lkcli've a task for you which will make understanding ISACaller easier, for then: ISACaller needs splitting into individual functions.15:33
lkclself.read_regs()15:33
ghostmansd[m]For me this project is kind of holiday, actually15:33
lkclself.do_something_else()15:33
lkclself.process_instruction()15:33
lkclself.write_regs()15:33
ghostmansd[m]I mean, compared to what I do on everyday basis :-)15:33
lkcl:)15:33
lkcli have visions of you abseiling down cliffs whilst simultaneously programming a... a... yeah15:34
ghostmansd[m]Does it mean that we will have kind of state machine, or instructions etc. will arrive as parameters?15:34
lkclno, it's just a huge code-clean-up15:34
ghostmansd[m]That is, hopefully all the state is explicit, right?15:35
ghostmansd[m]And passed by caller?15:35
lkclthe entire main function in ISACaller is just one ridiculously-long blatch of lines15:35
lkclyes?15:35
lkclhe said15:35
ghostmansd[m]Aha, yep, I think I know what you mean :-)15:35
lkclthere are, um, some things that the yield() progression actually has to do side-effects15:35
lkclstoring things *in* ISACaller as part of other yield() progressions15:36
lkclit's a dog's dinner mess to be honest but there's not much other option once you get involved with yield15:36
ghostmansd[m]Lol15:36
lkclyou can't return anything *other* than what is being yield()ed15:36
ghostmansd[m]Well, otoh, I like yield15:36
lkclwhich means you can't bloody well call functions to get actual, like, y'know... function call return results?15:37
ghostmansd[m]Because it still makes other stuff look simpler15:37
lkcli do too, but when it becomes pervasive it's a bit of a handicap15:37
lkclthe best/worst example i saw of this was a full-on HTTP proxy server15:37
lkcli wrote it 10 years ago and *only now* are python-istas / python-afficionados going "oh we should convert everything to asyncio" because that's all luverlyy-and-the-latest-treeeeen15:38
lkcld15:38
lkclhttps://git.libre-soc.org/?p=multitaskhttpd.git;a=blob;f=README;hb=HEAD15:39
lkclanyway: cleaning up ISACaller would give you a working-knowledge / idea of its structure (and foibles)15:40
lkclwhich would in turn give you the "handles" on which to try setting XLEN=32/16/815:40
ghostmansd[m]Ok15:42
ghostmansd[m]Do you have a task?15:43
lkclyes the CSV reading15:48
lkclunit tests15:48
lkclsorry, thought that was understood15:48
ghostmansd[m]Nope, I mean regarding ISACaller update15:49
ghostmansd[m]:-)15:49
lkcloh ok.15:49
ghostmansd[m]I mean, once I complete CSV15:49
lkclah right, no, bugreport not created yet15:49
lkclfeel free to make one, cross-ref irclog here15:49
lkclthe only thing is, you'll need to run a *lot* of openpower-isa unit tests each time15:49
lkcli strongly recommend doing one code-cut at a time (create one function)15:50
lkclstarting at the *end* of the function named call()15:50
lkclhttps://git.libre-soc.org/?p=openpower-isa.git;a=blob;f=src/openpower/decoder/isa/caller.py;h=36e3c732d55c7c705b40d4456a299af3807eb789;hb=8ffb51a901da471cb3fd80f0c1cd8f3bcc1a1028#l113815:51
lkclyou can see it's massive. 500 frickin lines.15:52
lkclthe first blindingly-obvious "cut" point should be here:15:52
lkclhttps://git.libre-soc.org/?p=openpower-isa.git;a=blob;f=src/openpower/decoder/isa/caller.py;h=36e3c732d55c7c705b40d4456a299af3807eb789;hb=8ffb51a901da471cb3fd80f0c1cd8f3bcc1a1028#l159215:52
lkclbasically call() should become a blindingly-obvious set of well-named functions15:53
lkclwhich pass around parameters.15:53
lkclthat _will_ however be hampered by not being able to use function call return-results15:54
lkcland you will see self.srcstep and self.dststep are a byproduct of that limitation15:55
lkclsorry15:55
lkclself.new_srcstep and self.new_dststep15:55
lkcldeep breath: before each commit you'll need to run pretty much *every* one of these unit tests15:56
lkclhttps://git.libre-soc.org/?p=openpower-isa.git;a=tree;f=src/openpower/decoder/isa;hb=HEAD15:56
lkclbecause ISACaller is actually frickin complicated15:57
cesarlkcl: It seems to me that DMI single-step is not really implemented on TestIssuer (although start and stop core are). I guess there wasn't time to implement it for the test chip.16:01
lkclcesar, yes it is.  or, it had damn well better be16:02
lkclit's a little odd, though16:03
lkclyou have to run DMI "stop", first16:03
lkclthen run a polling-procedure to check it's actually stopped16:03
lkclthen you can "step"16:03
lkcli described it to Anton on the #microwatt channel16:03
lkcl1 sec16:03
lkcldrat, it looks like it was before i enabled logging16:05
lkclmight be on OPF mattermost16:05
cesarI mean, the single-step function is implemented in DMI, but, as far as I can see, TestIssuer does nothing with it.16:08
cesarI'll take a deeper look.16:08
cesarThere must be an unit-test for this somewhere.16:11
ghostmansd[m]lkcl: ack, will summarize this in task16:19
Veeralkcl: did it worked out17:39
ghostmansdlkcl: I have a question regarding the table18:53
ghostmansdLet's assume we have 0x0000000090000A93 as an input value for extsb instruction with XLEN=6418:53
ghostmansdWhy do we have 0x0000000000000093 there? I would have expected the sign active, thus propagated to 0xffffffffffffff93.18:54
ghostmansdPlease correct me if I'm mistaken.18:54
ghostmansdSo, long story short: we take the byte, get its sign (1 in this case, since we got 0x93), then populate the byte to the rest.18:56
ghostmansdAgain, I can for sure be wrong. :-) But the rest of the table works like this.18:57
ghostmansdlkcl: I've updated the csv respectively, please let me know if you think my rationale is wrong. I've also committed the corresponding test which deals with these CSVs. Hopefully this test is able to incorporate more CSVs, and I implemented it in batch mode so it'll be fast if we desire to update it with more cases.19:50
ghostmansdThe way I access CSVs (path construction) is a total bullshit. Please let me know if we have some standard way to do it.19:51
ghostmansdlkcl: https://bugs.libre-soc.org/show_bug.cgi?id=723 for tests20:10
ghostmansdwill raise the task for ISACaller changes soon, likely the day after tomorrow20:11
ghostmansdI've also updated https://libre-soc.org/3mdeb/ghostmansd/ with task 723, please check whether this should be covered by some grant or not, I'm not sure20:23
lkclghostmansd, yes, i'll work it out21:07
lkcl+extsb, 0xFFFFFFFFFFFFFF93 , 0x00000093 , 0x0093  , 0x9321:10
lkclbecause it is extsb, the only thing to take into account is the 0x9321:11
lkclwhere bit 7 is 121:11
lkcland is therefore propagated down the *entire* lot, all XLENs.21:11
lkclso that should be21:11
lkcl0xffffffffff93, 0xffffff93, 0xff93, 0x9321:12
cesarlkcl: On branch libresoc-nmigen-fork of nmigen:21:35
cesarfrom nmigen import Module, Signal, Repl21:35
cesarm = Module()21:35
cesars = Signal(8)21:36
cesarm.d.comb += s.eq(Repl(0,8))21:36
cesarTraceback (most recent call last):21:36
cesar  File "<stdin>", line 1, in <module>21:36
cesar  File "/home/cstrauss/src/nmigen/nmigen/hdl/ast.py", line 921, in Repl21:36
cesar    return value.__Repl__(count, src_loc_at=src_loc_at)21:36
cesarAttributeError: 'int' object has no attribute 'Repl'21:37
cesarMaster branch of seems ok.21:38
lkclcesar, i haven't merged into libresoc-nmigen-fork for some time.  use libresoc-partsig instead21:39
cesarProblem solved, thanks.21:40
lkcl:)21:41
lkclmerging is a bit of a lairy one, i forget each time how to do it21:41
ghostmansd[m]lkcl: I already did it :-)21:41
lkcland there's some merge-conflicts that need sorting, each time, now21:41
lkclghostmansd[m], :)21:41
ghostmansd[m]Looked somewhat persuasive21:42
ghostmansd[m]:-D21:42
lkclwait, whuu? what did you do? :)21:42
ghostmansd[m]Fixed extsb21:42
lkcloh cool.21:42
ghostmansd[m]In csv21:42
lkclbut you saw you missed a couple of values?21:43
lkclhttps://git.libre-soc.org/?p=openpower-isa.git;a=commitdiff;h=951dd564494af57dde0c439604f529f6b007bb9821:43
lkclyou did XLEN=64 extsb correctly21:43
lkclbut missed XLEN=32 and XLEN=16 extsb21:43
ghostmansd[m]For now I updated XLEN=6421:43
lkclahh21:43
ghostmansd[m]Because that was the one I could test :-)21:43
lkclgit pull21:43
lkclok21:43
lkclyehyeh21:43
ghostmansd[m]But yeah, please push others I haven't looked into21:44
ghostmansd[m]That one I saw since test failed21:44
ghostmansd[m](and that one was even w/o extsb changes)21:44
ghostmansd[m]So I simply took a look at value and realized it was incorrect wrt how the algorithm expects it to be21:45
ghostmansd[m]The test is run atop of the current extsX routines21:46
ghostmansd[m]I haven't pushed EXTS routine yet21:46
ghostmansd[m]That'll be the next step21:46
ghostmansd[m]I also suspect once we enable other XLEN we'll face more errors :-)21:48
ghostmansd[m]But I think these can be solved in scope of this enabling21:48
lkclyes. going down the stack carefully. it's quite a big job.  the entire unit test-case suite needs duplicating *multiple* times...21:52
* lkcl claps hands together in fake-joy21:52
ghostmansd[m]I just recalled you mentioned another task quite similar to XLEN, where changes are rather mechanical, but I already forgot the details, do you recall what must be done?22:21

Generated by irclog2html.py 2.17.1 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!