Sunday, 2021-03-14

awyglelkcl_: on a totally unrelated note, regarding the sdram controller referenced above, were you unable to find a libre-licensed controller for more advanced memory, or just decided sdram was the way to go?00:46
lkcl_DDR3/4 needs a high-speed analog PHY which, due to the parallel data bus, actually needs impedance-match training *at both ends*01:12
lkcl_this is extremely complex and costly analog design work that is tuned not only to the geometry but to the characteristics of the Foundry01:13
lkcl_consequently it requires approximately 12 to 18 months of R&D for which USD 600,000 is not an unreasonable fee01:13
lkcl_you license a proprietary PHY which has been silicon proven, tested, and Certified by the designers to actually work01:14
awyglesure. i often will cap my designs at DDR2 even on devices with their own analog PHYs just because it's so much simpler.01:14
lkcl_for which you pay typically USD $1m and receive it immediately01:15
lkcl_if you happen to know a way to drive even DDR2 using digital-only signals that would be fantastic01:16
lkcl_a hell of a lot better than 133 mhz SDRAM101:16
lkcl_anyway. 1am here. more tomorrow01:17
jn__a libre modern memory controller would be an interesting project in itself01:27
awyglehm depending on what exactly ou mean by "digital-only" i'm not sure there needs to be much if any analog in a ddr2 phy beyond just having a reasonably stable output impedance01:59
awyglealthough i'd want to double check the spec for what's actually mandatory before asserting that with confidence01:59
lkcl_awygle: some (most if not all) FPGAs have fixed impedance outputs even for DDR3 PHYs12:26
lkcl_this basically relies on two things:12:26
lkcl_1) for simple designs, certain DDR RAM ICs are "Certified" (or more like "tested until they find one that works...") for use with that FPGA12:27
lkcl_2) resistor banks are inserted into the data lines (address lines are more lenient, having a longer hold time) which can be manually replaced until it "works"12:28
lkcl_then by more luck than good fortune the DRAM ICs can be "trained" to match the (fixed) impedance of the IC and it works...12:29
lkcl_... but only at low clock rates12:29
lkcl_for the gigabit ethernet router IC that may well be "Good Enough"12:29
lkcl_because it's only going to be maximum 300mhz anyway12:30
lkcl_driving QFP pins beyond around 150 mhz is risky and eats power esp. at 1.8v12:31
lkcl_+                        # remember whether this is a prefixed instruction, so14:12
lkcl_+                        # the FSM can readily loop when VL==014:12
* lkcl_ just reviewing binutils gas source code16:45
lkcl_adding in svp64 support looks to be pretty damn straightforward16:45
lkcl_if it was longer than 3 days i'd start to get concerned16:46
lxoif you think so, I say go for it.  I've been stuck myself17:32
lxoit's very hard for me to deal with moving targets17:33
lxoI don't suppose my first steps would save much time, but if you wish, I can send it to you17:36
lkcl_lxo: yes please.18:02
lkcl_one thing i left out: generating a table which identifies EXTRA2/3, which matches... err... where is it...18:03
lkcl_const struct powerpc_opcode powerpc_opcodes[] = {18:04
lkcl_that one's a bit of a pain, as a separate hash-table will be needed18:04
lkcl_extending struct powerpc_opcode18:05
lkcl_which i'm reluctant to do because the patch would hit hundreds of lines18:05
lkcl_holy shit *thousands* of lines18:05
lkcl_four and a half *THOUSAND* opcodes, christ18:06
programmerjakehmm, if you add a field to powerpc_opcode, shouldn't a refactoring tool be able to make all the appropriate edits? though if you add the field at the end and have it be zero by default you can just leave it out of most of the struct initializers...right?18:23
programmerjakeadd `struct svp64_properties svp64;` as a new field18:25
programmerjakealternative...have a c or python build script that generates a c source or header file containing the definitions18:27
programmerjakedepends on if binutils will accept python build scripts...18:27
programmerjakelkcl_ lxo ^18:28
programmerjakeor maybe a posix shell build script...but that'll be more of a pain18:29
lxowhat is the project's reference timezone, UTC (no DST changes), NA (now in DST) or Europe (not yet in DST)?20:13
programmerjakegenerally UTC20:13
programmerjakethough the meeting schedules may change due to DST, check with lkcl_20:16
lxoheh, if there's any uncertainty as to whether it changes with DST, then there's just as much uncertainty as to whether UTC is the reference timezone20:54
programmerjakewell, we have changed it in the past since some people would rather not meet at 1am or 7am...20:55
lxoI understand the rationales.  but I have to adjust my calendar appointments20:57
programmerjakethe google calendar meeting for tuesday is still at 22:00 utc so far20:59
lxoback when Brazil had DST, my US-centered appointments had to be changed 4 times a year, varying by up to two hours depending on the offsets between the two hemispheres20:59
lxoso I understand the rationales and the procedures, I pay attention to the dates (I've had colleagues in various European countries), I just don't know how this specific team deals with this21:00
programmerjakeI'm personally hoping switching timezones twice a year goes away, it's a major pain and doesn't even have the marginal energy-saving it might have had 80 years ago...21:04
programmerjakefrom what I can tell anyway21:04
programmerjaketzdata is already a mess, simplifying it will definitely be nice!21:05
lkcl_if they don't accept scripts then we just auto-generate it anyway21:52
lkcl_yes the meetings are all in UTC21:52
lkcl_we *may* have to shift the wednesday bi-weekly one forward an hour not because of DST but because AU goes back *two* hours, it's unreasonable for Paul, Mikey and Anton otherwise21:53
lkcl_lxo: yeah that patch looks great, can you create a branch and push to;a=summary ?22:02
lxoauto-generated files without their corresponding sources in the source repo would be a violation of the GPL, wouldn't it?22:32
lxoI happen to have had a long conversation with rms about generated files not long ago, maybe as recently as a couple of weeks ago22:35
lxothe conclusion, in my own words, is that the sources are what you edit to develop the program.  so if the idea is to have a one-shot generation of the file, and from then on edit the generated file, that is your source.  but if you'd go back to the original inputs and modify them to regenerate the file, then the generated file is not source22:37
lxoalso keep in mind that GNU requires copyright assignments to the FSF for binutils (and gcc)22:39
lxough, why is git trying to push the world to the repo, when I've only modified a couple of files?22:52
programmerjakedid you filter-branch? :)22:59
lxoheh, no23:06
lxoI even tried to push the base commit along with the patched one, which usually avoids this when testing patches based on trees that are a few days old, but that didn't help.  weird.  investigating23:08
lxook, gas changes are in heads/lxo/WIP-svp64-gas, gcc changes are in heads/lxo/WIP-svp64-gcc, in the respective repos23:17
programmerjakeah, I'd bet it was because the git repos on libre-soc are several weeks out-of-date23:25
lkcl_lxo: very interesting about the auto-generated source... in this particular case it would make the CSV files from the Libre-SOC website part of that "source"23:33
lkcl_ah i meant a collaborative branch name that we can work together23:36
lkcl_ok so i've pushed a branch libresoc-svp64-gas23:39
lkcl_no problem with copyright assignment.23:44
lxolkcl_, why stop at the CSV file?  how about the sources of the web pages, from which the CSV file is generated IIRC?23:47
lkcl_the web pages *are* from the CSV files because they're also auto-generated (from ikiwiki)23:51
lkcl_ahh except actually those CSV files were taken part-verbatim from microwatt initially23:52
lxoah, so the pages are generated from CSV, and I'd got it backwards?23:52
lkcl_it goes:23:54
lkcl_* microwatt decode1.vhdl -->23:54
lkcl_* minor_19.csv, minor_31.csv, major.csv etc. etc23:54
lkcl_* reads *.csv23:55
lkcl_* writes SV*.csv23:55
lkcl_     and microwatt_sv_decode.vhdl23:55
lkcl_     and now i'd like to add ppc_svp64_info_struct.h23:56
lkcl_*hypothetically* speaking it *may* be possible to write a parser of decode1.vhdl23:57
lkcl_which would be hilarious.23:57 would take decode1.vhdl as input23:57
lkcl_(downloaded with wget)23:57
lkcl_create the csv files as temporary output23:58
lkcl_except i've made some modifications to the CR column.  but that's just one column23:58
lxothat fits the case richard wanted to talk to me about23:59
lkcl_that's funny23:59

Generated by 2.17.1 by Marius Gedminas - find it at!