Monday, 2019-06-17

*** tpb has joined #yosys00:00
*** Thorn__ has joined #yosys00:51
*** Thorn has quit IRC00:51
*** Thorn__ is now known as Thorn00:56
*** gsi__ has joined #yosys01:11
*** gsi_ has quit IRC01:14
*** emeb_mac has joined #yosys01:43
*** lutsabound has quit IRC02:31
*** proteusguy has quit IRC02:54
*** PyroPeter has quit IRC02:56
*** PyroPeter has joined #yosys03:09
*** s_frit has quit IRC03:44
*** s_frit has joined #yosys03:44
*** _whitelogger has quit IRC04:20
*** _whitelogger has joined #yosys04:22
*** proteusguy has joined #yosys04:26
*** _whitelogger has quit IRC04:38
*** _whitelogger has joined #yosys04:40
*** rohitksingh_work has joined #yosys05:19
*** indy has quit IRC05:37
*** dys has quit IRC06:23
*** emeb_mac has quit IRC07:11
*** m4ssi has joined #yosys07:30
*** togo has joined #yosys08:44
*** s_frit has quit IRC09:41
*** vidbina has joined #yosys10:26
*** vidbina has quit IRC10:37
*** vidbina has joined #yosys11:58
*** AlexDaniel has quit IRC12:03
*** AlexDaniel has joined #yosys12:04
*** _whitelogger has quit IRC12:41
*** _whitelogger has joined #yosys12:43
*** rohitksingh_work has quit IRC13:14
*** vonnieda_ has quit IRC14:04
*** proteusguy has quit IRC14:09
*** rohitksingh has joined #yosys14:15
*** vonnieda has joined #yosys14:18
*** emeb has joined #yosys14:49
*** rohitksingh has quit IRC14:52
*** rohitksingh has joined #yosys15:26
*** maikmerten has joined #yosys15:37
*** rohitksingh has quit IRC15:42
*** rohitksingh has joined #yosys15:53
*** rohitksingh has quit IRC16:22
*** proteusguy has joined #yosys16:25
*** fsasm_ has joined #yosys16:32
*** m4ssi has quit IRC16:40
*** vidbina has quit IRC16:51
*** vidbina has joined #yosys17:01
*** dys has joined #yosys17:05
*** proteusguy has quit IRC17:25
*** proteusguy has joined #yosys17:38
*** sandeepkr has joined #yosys17:44
*** alexhw has quit IRC17:57
*** dys has quit IRC18:29
*** esden has quit IRC18:32
*** esden has joined #yosys18:33
*** dys has joined #yosys18:42
*** indy has joined #yosys18:43
*** vidbina has quit IRC19:00
ZirconiumXdaveshah: (hi, yes, I'm back) Is the $lut cell always for constant values?19:14
daveshahZirconiumX: yes, it is, although I'm not sure whether it appears unless you map to LUTs (either using `abc -lut` or some other method)19:26
daveshah`$shiftx` is usually used for both non-constant values, and also for LUT-style structures even with constant values following the frontend19:27
ZirconiumXI'm just wondering how best to utilise things like muxes19:27
ZirconiumXSince the 74 series has 16:1, 8:1, 4:1 and 2:1 muxes19:27
ZirconiumXabc seems to handle the 2:1 and 4:1 muxes19:28
daveshahYou probably want to use the `pmux2shiftx` command shortly after initial optimisations (before synthesis), and then techmap suitable `$shiftx`s19:28
daveshahEddie has been working on something like this for the Xilinx muxes19:29
*** dxld has quit IRC19:32
daveshahActually, letting the default techmap rules map `$_MUX_` cells, then using `muxcover` to combine them to larger `$_MUX(4|8|16)_` cells, then techmapping those cells, is probably the path of least resistance19:33
ZirconiumXI need to use a proper Yosys script I think :P19:35
*** dxld has joined #yosys19:36
ZirconiumXdaveshah: Even just having muxcover alone is a major saving19:43
ZirconiumXEven if 25% of my gates are muxes now19:43
ZirconiumXWas 5,051 ICs, now 4,047 ICs19:44
ZirconiumX...Mostly because the _MUXN_ cells weren't mapped19:45
daveshahYes, you'll need techmap rules (albeit fairly simple ones) to turn them into the relevant 74xx19:46
ZirconiumXPresumably a MUX4 is a 4:1 mux?19:46
daveshahYes19:46
daveshahSee https://github.com/YosysHQ/yosys/blob/master/techlibs/common/simcells.v#L231-L31319:47
tpbTitle: yosys/simcells.v at master · YosysHQ/yosys · GitHub (at github.com)19:47
tntWhen implementing a CPU in 74xx, usually you'd also use the OE of the various chips to drive/not-drive shared lines rather than using real muxes, not sure how yosys/abc maps that ?19:48
daveshahI'm pretty sure Yosys can only go in the other direction (from tristates to real muxes)19:49
daveshahusing the `tribuf -logic`19:50
ZirconiumXdaveshah: It's sort of like having an "& !OE" at the end of the output19:53
ZirconiumXtnt: I have fake tristate gates in my library19:55
ZirconiumXEssentially things like 7401s in wired-AND19:56
ZirconiumXApparently ABC really like wired-AND NAND gates19:56
*** AlexDaniel has quit IRC19:58
ZirconiumXThough given that TI apparently don't make 7401s anymore, perhaps I should look for an alternative19:58
*** cr1901_modern has quit IRC20:23
*** cr1901_modern has joined #yosys20:29
ZirconiumXdaveshah: Presumably replacing these _MUXN_ cells is a good time for _TECHMAP_REPLACE_?20:29
daveshahYes20:30
daveshahThat way the name of the _MUXN_ is preserved20:30
ZirconiumXSo, we're now at 4,417 ICs20:38
ZirconiumXSo that's a solid 10% reduction in chips20:38
tntWhat's the target btw ?20:53
*** AlexDaniel has joined #yosys20:59
ZirconiumXtnt: As in, target number of chips?21:01
tntno, the target cpu you're trying to implement :)21:04
*** maikmerten has quit IRC21:05
ZirconiumXI wanted to design and build a (fairly small) RV32E CPU, but figured Yosys could probably do a better job than me if it knew how21:05
*** fsasm_ has quit IRC21:06
tntdid you see http://www.halfbakedmaker.org/blog/lmarv1-1 ?21:07
tpbTitle: Building LMARV-1: a tangible RISC-V processor, part 1 The Half-Baked Maker (at www.halfbakedmaker.org)21:07
ZirconiumXYep21:10
ZirconiumXAnd a lot of the other ones21:10
ZirconiumXAnd they never got completed21:10
ZirconiumXThough to be fair I don't have particularly high hopes for this21:10
ZirconiumXWe'll see21:10
tntI think an hybrid approach might be the most viable.  Design the "general architecture" manually, thing like registers, source/result bus ... and then use logic for the sub-units to automatically map to availbale logics.21:12
tntjust my 2ct.21:12
tntBecause tbh, 4000 chips seems ... big.21:12
daveshahI think you should be able to reduce the chip count quite a bit if you map RAM to a RAM chip rather than registers21:12
daveshahMight also be worth looking at SERV21:13
tnthttps://en.wikipedia.org/wiki/74181 is nice but getting yosys to map it is going to be tricky for instance :p21:14
tpbTitle: 74181 - Wikipedia (at en.wikipedia.org)21:14
daveshahIf you have some kind of RAM available then SERV should need very little logic compared to picorv32, being bit serial21:14
daveshahCurrently I'd imagine the register file dominates21:14
ZirconiumXYeah, D-flip-flops make up 25% of the benchmark21:15
ZirconiumX50%(!) is MUX4s21:15
tntand how many of those mux4s have their inputs hardwired to 0/1 ?21:16
tnt(i.e. used at LUT2 :p)21:16
ZirconiumXI don't know how to check21:16
daveshahI imagine many of those MUX4s will be mixing DFFs21:16
daveshah*muxing21:16
daveshahYou could try write_verilog and just look at the output21:17
tntAh yeah right, without shared busses / OE would be ... large in mux.21:17
tnt(and without ram)21:17
ZirconiumXSo, there *are* SRAM chips, but they're fairly slow (fastest one I can find is 45ns response time)21:17
daveshahYosys can only map RAM with separate read and write ports at the moment (and a lot of Verilog is written assuming this is available)21:19
daveshahUnfortunately this does limit mapping discrete RAM chips a bit21:19
tntZirconiumX: there are <=10ns sram.21:21
ZirconiumXtnt: Where?21:22
ZirconiumXBecause the main discrete RAM chips I can find are the 62 series (e.g. the 62128 and 62256)21:23
ZirconiumXWhich are 70ns DIP, but less if you use a smaller form factor21:23
tnthttps://www.cypress.com/file/42721/download21:23
tnt(that's just a random one I picked)21:24
ZirconiumXtnt: Sure, but then you have to find chips which have separate read/write ports21:28
tntYou could double pump the SRAM. Or you can use a dural port sram.21:29
tnthttps://www.idt.com/document/ovr/multi-port-memory-products-overview21:33
ZirconiumXI suppose it also goes against the spirit of building a CPU out of 74 series gates21:35
ZirconiumXIf necessary I'll investigate it though21:35
sorearpeople totally used RAMs in the MSI era21:39
ZirconiumXNot saying they didn't21:39
tntWhat's the widest D ff chip with OE ?21:40
ZirconiumXtnt: I *think* the 74A[H]C16373, which is technically tri-state21:45
ZirconiumXBut there are 16 of them packed into a chip21:45
tntThat's actually a latch, not a ff21:47
ZirconiumXThen it'd have to be the 74x57421:48
ZirconiumXtnt: Actually, how about the 16374?21:50
tntYeah, that would work. You'd need 128 of those for the register bank with two source bus output.21:51
ZirconiumXOkay, so that helps reduce the gate count a bit21:58
ZirconiumXI think I'll use chips from the AC family (which includes the '16374, but not the '150 MUX16)22:00
ZirconiumXdaveshah: Can you get Yosys to turn a MUX16 into a pair of MUX8s and a MUX2?22:00
ZirconiumX(maybe change the muxcover costs?)22:00
tntZirconiumX: what voltage are you targetting btw ? 3v3 ?22:00
ZirconiumX5V22:00
ZirconiumXI could consider 3V22:00
ZirconiumX*3V322:01
daveshahZirconiumX: you can stop muxcover from inferring MUX16s at all22:01
daveshahOtherwise you could have the techmap rule for MUX16s create two MUX8s and a MUX222:01
ZirconiumXtnt: The problem is the distinct non-overlap between logic families22:02
ZirconiumXFor example, the LVC family only has the 157 MUX222:03
ZirconiumXIt is, however, very fast22:04
*** togo has quit IRC22:18
*** gnufan_home has quit IRC22:35
*** cr1901_modern has quit IRC23:08

Generated by irclog2html.py 2.13.1 by Marius Gedminas - find it at mg.pov.lt!