hzeller has joined #symbiflow
<mithro> litghost: Does cmake correctly handle changing of version number for conda dependencies?
<mithro> litghost: I'm getting `Unexpected command-line argument '--disable_check_route'`
<litghost> Unclear, I typically get a conda update in that case
<litghost> Because cmake detects a rule change
hzeller_ has joined #symbiflow
hzeller has quit [Ping timeout: 252 seconds]
hzeller_ has quit [Ping timeout: 244 seconds]
<hackerfoo> FYI, CI doesn't seem to re-run automatically when something gets merged afterwards that affects it, so arch-defs #678 should break the build: https://github.com/SymbiFlow/symbiflow-arch-defs/blob/97966c24aba60e15686a13effda157a7b1fa9ea1/xc7/tests/dram/CMakeLists.txt#L78
<tpb> Title: symbiflow-arch-defs/CMakeLists.txt at 97966c24aba60e15686a13effda157a7b1fa9ea1 · SymbiFlow/symbiflow-arch-defs · GitHub (at github.com)
<hackerfoo> I fixed it in #682
<hackerfoo> I'm tired of Conda 504 errors breaking tests.
<mithro> hackerfoo: It's been a lot more unreliable lately...
<tpb> Title: Mirroring an Anaconda repository Anaconda 2.0 documentation (at docs.anaconda.com)
<tpb> Title: cmake -DUSE_CONDA=FALSE is broken · Issue #564 · SymbiFlow/symbiflow-arch-defs · GitHub (at github.com)
<mithro> hackerfoo: Yes, we should also fix that....
<tpb> Title: repository - How do I create a local update server for Anaconda Python? - Super User (at superuser.com)
<hackerfoo> Can we list local channels first, so that it will use local packages when present?
<mithro> hackerfoo: What do you mean?
<hackerfoo> I'm guessing there's a list of channels in a configuration file from looking at this: https://conda.io/projects/conda/en/latest/user-guide/configuration/use-condarc.html#offline-mode-only-offline
<mithro> hackerfoo: Yeah
<hackerfoo> I'm also guessing that they are tried in order, starting from the top.
<hackerfoo> Ah, yes, it says that.
<hackerfoo> So if you put a file URL at the top pointing to local packages, it should use those if present.
hzeller_ has joined #symbiflow
<tpb> Title: GitHub - enjoy-digital/litescope: Small footprint and configurable embedded FPGA logic analyzer (at github.com)
alexhw has quit [Ping timeout: 246 seconds]
alexhw has joined #symbiflow
hzeller_ has quit [Ping timeout: 248 seconds]
hzeller_ has joined #symbiflow
OmniMancer has joined #symbiflow
proteusguy has joined #symbiflow
proteusguy has quit [Ping timeout: 246 seconds]
hzeller_ has quit [Ping timeout: 252 seconds]
proteusguy has joined #symbiflow
adjtm has quit [Ping timeout: 244 seconds]
adjtm has joined #symbiflow
GuzTech has joined #symbiflow
<sf-slack2> <acomodi> I think it would be good to rebase upstream VTR master on Symbiflow VTR fork, I am going to open a PR with all the (possible) conflicts solved. In addition I would say that we should do this regularly to keep everything updated and reduce the number of possible conflicts
<sf-slack2> <mkurc> I added an issue related to adding "fasm_mux" support to the V2X: https://github.com/SymbiFlow/symbiflow-arch-defs/issues/697
<tpb> Title: Add support for "fasm_mux" in "interconnect" to V2X · Issue #697 · SymbiFlow/symbiflow-arch-defs · GitHub (at github.com)
<sf-slack2> <acomodi> Upstream merge PR is here: https://github.com/SymbiFlow/vtr-verilog-to-routing/pull/49
<tpb> Title: Merge upstream by acomodi · Pull Request #49 · SymbiFlow/vtr-verilog-to-routing · GitHub (at github.com)
Akorsvang has quit [Ping timeout: 256 seconds]
_whitelogger has joined #symbiflow
kraiskil has joined #symbiflow
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
proteusguy has quit [Ping timeout: 258 seconds]
proteus-guy has joined #symbiflow
proteus-guy has quit [Remote host closed the connection]
kraiskil has quit [Ping timeout: 245 seconds]
proteusguy has joined #symbiflow
OmniMancer1 has joined #symbiflow
OmniMancer has quit [Ping timeout: 250 seconds]
kraiskil has joined #symbiflow
kraiskil_ has joined #symbiflow
kraiskil has quit [Ping timeout: 246 seconds]
hzeller_ has joined #symbiflow
hzeller_ has quit [Ping timeout: 245 seconds]
GuzTech has quit [Remote host closed the connection]
<sf-slack2> <acomodi> opened the PR upstream here: https://github.com/verilog-to-routing/vtr-verilog-to-routing/pull/559
<tpb> Title: WIP [DNM]: Equivalent Tiles placement by acomodi · Pull Request #559 · verilog-to-routing/vtr-verilog-to-routing · GitHub (at github.com)
OmniMancer1 has quit [Quit: Leaving.]
kraiskil_ has quit [Ping timeout: 255 seconds]
<sf-slack2> <acomodi> Good news is that picosoc seems to be working on HW with the equivalent tiles and tile split. Need to double check that though
kraiskil_ has joined #symbiflow
<hackerfoo> acomodi: Nice!
jevinskie has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<hackerfoo> Any ideas why bram_shifter.v (https://github.com/SymbiFlow/symbiflow-arch-defs/blob/master/xc7/tests/bram_shifter/bram_shifter.v) doesn't use block RAM, where `ram0` was copied from bram.v (https://github.com/SymbiFlow/symbiflow-arch-defs/blob/master/xc7/tests/bram/bram.v) which does use block RAM?
<tpb> Title: symbiflow-arch-defs/bram_shifter.v at master · SymbiFlow/symbiflow-arch-defs · GitHub (at github.com)
<litghost> hackerfoo: Too deep, that test requires a RAMB36E1, not a RAMB18E1 SDP
<litghost> hackerfoo: Maybe?
<litghost> hackerfoo: What does Vivado do?
<hackerfoo> I'll try it.
<litghost> hackerfoo: I'm wrong, that should fit
<hackerfoo> I copied from bram, which uses RAMB18
<hackerfoo> Can Vivado load a .pcf file?
<litghost> hackerfoo: No it uses tcl or xdc (which is tcl like)
kraiskil_ has quit [Ping timeout: 246 seconds]
celadon_ has joined #symbiflow
proteusguy has quit [Ping timeout: 250 seconds]
celadon has quit [Ping timeout: 250 seconds]
<hackerfoo> litghost: Vivado uses a RAMB18E1 for bram_shifter.v
<litghost> hackerfoo: Okay, so that points to some kind of yosys issue. Check if it's our techmap by doing the standard Yosys flow only
<hackerfoo> Also, I made this which automatically creates Vivado projects from a list of Verilog files: https://github.com/HackerFoo/hackerfoo-go-functions/blob/master/functions/symbiflow#L45-L145
<tpb> Title: hackerfoo-go-functions/symbiflow at master · HackerFoo/hackerfoo-go-functions · GitHub (at github.com)
<hackerfoo> It's pretty basic, but it works.
proteusguy has joined #symbiflow
<mithro> kgugala / mkurc: Is anyone working on adding fasm metadata output to muxgen at the moment?
<hackerfoo> litghost: Yosys+Vivado? Do we have anything to automate that?
<litghost> hackerfoo: I don't believe so
<litghost> hackerfoo: I know people have done it in the past
<hackerfoo> Can I just feed top_synth.v into Vivado?
<litghost> hackerfoo: No, as we've already applied VPR specific transformations
<litghost> hackerfoo: You have two options
<litghost> hackerfoo: You can either just use the Vivado path (e.g. don't pass "-vpr" to synth_xilinx and don't apply the xc7 VPR techmap)
<litghost> hackerfoo: Or you can write a techmap to lower from the VPR specific blackboxes to something Vivado understands
<litghost> hackerfoo: In theory both paths are equivilant, the first is easier to do
<hackerfoo> Yeah, the first sounds easier. I'll do that. Thanks.
<hackerfoo> litghost: `grep RAMB18E1 top.eblif` shows nothing for bram_shifter, but does for bram. I don't think I need Vivado to confirm Yosys isn't working, right?
<litghost> hackerfoo: Yes.
<litghost> hackerfoo: I guessed that you take the original verilog (not the post-synth verilog) and confirm Vivado synthesized a BRAM
<litghost> suggested*
<hackerfoo> It did.
<litghost> hackerfoo: I believe you confirmed that bram_shifter under vivado did synth a BRAM, but Yosys
<litghost> hackerfoo: Right, so that points to something in Yosys doing something different
<litghost> hackerfoo: It is possible that Yosys made a legal transformation of the underlying design such that a BRAM was no longer required
<hackerfoo> So I should probably compare logs between bram and bram_shifter?
<litghost> hackerfoo: For example, if Yosys understood that only the first 64 elements would be accessed, then it might emit LUT-RAM's instead
<litghost> hackerfoo: Yosys (in theory) will only make legal synthesis transformations, and if you aren't actually using enough of the RAM, it might be superior to synthesis the RAM as a LUT-RAM
<litghost> hackerfoo: Even if we wanted a BRAM
<hackerfoo> The design does work on hardware. Maybe I should add more to the initialization. It's just weird, because I copy-pasted from bram.
<hackerfoo> I would think (* ram_style = "block" *) would force Yosys to use block RAM.
<litghost> hackerfoo: I believe ram_style is a Verilog extension, and I would not be suprised if Yosys does not respect it
<litghost> hackerfoo: Ya, a quick grep in Yosys shows that ram_style is not supported
<litghost> hackerfoo: It's an open question if Yosys should support something akin to ram_style or not, but I believe it effecitively always uses "ram_style = best"
<hackerfoo> I added more entries to the initialization, and still nothing. Either that doesn't do anything, or Yosys figured out that I'm just overwriting it.
<hackerfoo> It's just stuffing it all in 8xRAM128X1D. I guess that works.
<hackerfoo> For 64x16bits
<hackerfoo> I guess I'll have to use the RAMB18E1 primitive, then.
<litghost> hackerfoo: Ya
<litghost> hackerfoo: Did you just inadvertently test RAM128X1D?
<hackerfoo> I think I know why it's not using block RAM. I'm only using one bit out of each entry.
<hackerfoo> litghost: I already have a shifter test for RAM128X1D.
<litghost> hackerfoo: Ah, sure
<hackerfoo> It's cool that it figured that out, though. 1024x1bit fits in 8xRAM128X1D.
<mithro> hackerfoo: Yosys can produce edif which Vivado reads
<mithro> hackerfoo: This python script generates Yosys -> Vivado flow https://github.com/enjoy-digital/litex/blob/master/litex/build/xilinx/vivado.py#L112-L179
<tpb> Title: litex/vivado.py at master · enjoy-digital/litex · GitHub (at github.com)
<tpb> Title: Snippet | IRCCloud (at www.irccloud.com)
<hackerfoo> I don't think the result would be any different from Yosys+VPR, although it seems Yosys is smarter than Vivado in this case.
<mithro> hackerfoo: Memory inference is one area that Yosys seems to be better than other tools
futarisIRCcloud has joined #symbiflow
<litghost> hackerfoo/mithro : Vivado was specifically instructed to emit a BRAM, and that is what it did
<litghost> hackerfoo/mithro: Yosys ignored (and doesn't understand) the instruction
<hackerfoo> litghost: True. I'll see what happens without the annotation.
<mithro> I'm not following the full chat - just throwing random comments in...
<hackerfoo> Vivado still uses RAMB18E1. I don't know whether that's the right choice or not. The answer is probably "it depends."
<hackerfoo> Although distributed RAM's faster, right?
<litghost> hackerfoo: Depends
<litghost> hackerfoo: I believe BRAM is less power efficient?
<litghost> hackerfoo: And speed is relative to placement
<hackerfoo> Is there an easier way than {x, x, ... (16 times)} in Verilog to fan out a wire?
<hackerfoo> Now I'm getting a RAMB18E1.
<litghost> hackerfoo: Yes!
<tpb> Title: verilog - Whats the best way to create a mask knowing the number of bits? - Stack Overflow (at stackoverflow.com)
<litghost> hackerfoo: Very usefully, but I never remember the syntax off the top of my head
<litghost> hackerfoo: I always just google it
<hackerfoo> litghost: Thanks
<mithro> litghost: Do I recall you "discovered" that a `<direct>`interconnect doesn't mean "always connected" but is a mux?
<litghost> mithro: Yes
<litghost> mithro: With the additional caveat that it was in a "unconnected" blackbox pin
<tpb> Title: Snippet | IRCCloud (at www.irccloud.com)
<litghost> mithro: What's the question?
<mithro> When COMMON_SLICE.AX is used you don't output any FASM features?
<litghost> mithro: That is currently correct, we do not have the zero feature
<litghost> mithro: I believe hackerfoo added an issue on this
<mithro> litghost: You mean it is missing from the prjxray FASM database?
<hackerfoo> <direct> is more of a switch.
<tpb> Title: Add feature for each input of a mux · Issue #817 · SymbiFlow/prjxray · GitHub (at github.com)
<litghost> hackerfoo: <direct> and <mux> are actually identical under the hood
<litghost> <mux> has slightly more legilable .net output
<hackerfoo> That's how I understood it. Does <mux> support being disconnected, then?
<litghost> hackerfoo: Yes
<litghost> <mux> can select "nothing"
<hackerfoo> That seems problematic if the hardware can't do that.
<litghost> hackerfoo: The output of the mux from VPR's standpoint is "don't care' or "undefined"
<litghost> hackerfoo: Not really, as long as something isolates the downstream signal
<litghost> hackerfoo: Which usually happens as soon as the routing fabric is encountered
tpb has quit [Remote host closed the connection]
tpb has joined #symbiflow
<hackerfoo> I guess "disconnected" is really VCC or ground, anyway.
<litghost> hackerfoo: No neccesarily :/
<litghost> hackerfoo: Ah!
<litghost> hackerfoo: For muxes internal to the SLICE, there is no way to turn them off
<litghost> hackerfoo: That is not generally true for outputs from the SLICE
<hackerfoo> At least, you can't have multiple drivers, where it would be useful to have a high impedance state?
<tpb> Title: prjxray-db/segbits_clbll_l.db at master · SymbiFlow/prjxray-db · GitHub (at github.com)
<litghost> hackerfoo: In that case, each output of the mux asserts something, so the absence of a mux selection is valid, in which case no FASM feature is written, and the output of the mux is likely supressed
<litghost> hackerfoo: In terms of internal muxes, they are selecting from one of many inputs, assuming we used "valid" bit patterns, there will not be multiple drivers
<litghost> hackerfoo: routing muxes are more "exciting"