tpb has quit [Remote host closed the connection]
tpb has joined #symbiflow
freeemint has quit [Remote host closed the connection]
freeemint has joined #symbiflow
Vonter_ has joined #symbiflow
Vonter has quit [Read error: Connection reset by peer]
freeemint has quit [Ping timeout: 245 seconds]
<hackerfoo> I rebased add_io_for_x1y0, and fixed some problems in prjxray_create_edges.py, and now VPR seems to say it can't route anything to anything.
<hackerfoo> Or at least there are probably thousands of lines like:
<hackerfoo> Cannot route from SYN-VCC.VCC[0] (RR node: 0 type: SOURCE location: (79,130) class: 0) to BLK-TL-SLICEL.B2[0] (RR node: 5818 type: SINK location: (80,140) class: 8) -- no possible path
citypw has joined #symbiflow
proteusdude has quit [Ping timeout: 265 seconds]
proteusguy has joined #symbiflow
adjtm has quit [Ping timeout: 265 seconds]
OmniMancer has joined #symbiflow
adjtm has joined #symbiflow
bjorkintosh has quit [Ping timeout: 250 seconds]
Bertl is now known as Bertl_zZ
freemint has joined #symbiflow
adjtm has quit [Ping timeout: 240 seconds]
freemint has quit [Ping timeout: 240 seconds]
bjorkintosh has joined #symbiflow
adjtm has joined #symbiflow
freemint has joined #symbiflow
freemint has quit [Remote host closed the connection]
freemint has joined #symbiflow
<sf-slack> <mkurc> I think I have found an issue with chained PIPs that cannot be activated separately in both prjxray and symbiflow. I've created a document describing the issue and my proposed solution. I'd like to have some feedback about it.
<tpb> Title: Google Docs - create and edit documents online, for free. (at docs.google.com)
freemint has quit [Ping timeout: 240 seconds]
Bertl_zZ is now known as Bertl
<litghost> mkurc: In general those kind of chained pips don't need isolation, as we can just treat one of the pips as a ppips, and leave the feature with the other pip
<litghost> mkurc: Also, if a pip isn't making a choice, it general has no bits at all
<sf-slack> <mkurc> @litghost: So eg. a fuzzer would need to know which pips are "grouped" and try to fuzz those groups together? Then the same information would need to be available to fasm2bels?
<litghost> no, fasm2bels walks through no-decision edges like this
<litghost> If there is only one edge leaving an output site pin (or edge coming to a input site pin), it always takes the edge
<litghost> It is only in places where a decision is required that fasm2bels consults the configuration of the pips
<litghost> In the particular example above, the feature might be wrong, and might need to be lumped with an IN_USE feature
<sf-slack> <mkurc> But I've observed the following: there are PLL inputs (all but clocks) which are connected to the tile outputs through non-pseudo pips. And there is no other way for those signals. And I had to manually activate those pips in fasm2bels to make it see connections.
<sf-slack> <mkurc> Since we cannot isolate activation of those pips in the fuzzer, probably bits activating them are inside the PLL's IN_USE feature.
<sf-slack> <mkurc> So even that there is no other way I had to make them explicitly enabled.
<sf-slack> <mkurc> But that's another story. In this case we can treat them as pseudo pips.
<litghost> In that case, if we know a sink (input site pin) is connected, and there is only one path from the interconnect switch box to the PLL, we should be able to make the route
<litghost> mkurc: Ah, you might need to update https://github.com/SymbiFlow/prjxray/tree/master/fuzzers/071-ppips to emit the ppip files for the new tiles
<tpb> Title: prjxray/fuzzers/071-ppips at master · SymbiFlow/prjxray · GitHub (at github.com)
<litghost> mkurc: Ya, we need to emit the ppip files for the new tiles for https://github.com/SymbiFlow/symbiflow-arch-defs/blob/master/xc7/fasm2bels/make_routes.py#L21 to reach the fabric
<tpb> Title: symbiflow-arch-defs/make_routes.py at master · SymbiFlow/symbiflow-arch-defs · GitHub (at github.com)
freemint has joined #symbiflow
freemint has quit [Remote host closed the connection]
freemint has joined #symbiflow
freemint has quit [Remote host closed the connection]
<litghost> hackerfoo: Likely failure modes are either that the constant network didn't get connected or something broke in the lookahead (e.g. NaN propigation). For the first, https://github.com/SymbiFlow/symbiflow-arch-defs/tree/master/utils/rr_graph_walk can be used to verify that the graph actually has the connectivity. If that passes, route_diag with sink debugging turned on can be used to identify where in the route the
<litghost> router got lost
<tpb> Title: symbiflow-arch-defs/utils/rr_graph_walk at master · SymbiFlow/symbiflow-arch-defs · GitHub (at github.com)
freemint has joined #symbiflow
<sf-slack> <mkurc> @litghost Thanks, I'll try tomorrow with updated 071-ppips
<hackerfoo> litghost: Thanks
<litghost> hackerfoo: If you want a quick spot check, check the lookahead log (vpr_stdout.log in build/xc7/archs/artix7/devices/) and check if each segment found at least one instance of the segment
<litghost> hackerfoo: A warning is generated if it doesn't
<litghost> hackerfoo: Warning will be "Segment %s(%d) found no start_node_in"
citypw has quit [Ping timeout: 245 seconds]
freemint has quit [Ping timeout: 240 seconds]
adjtm has quit [Ping timeout: 240 seconds]
<hackerfoo> litghost: There's 20 of those warnings. They look familiar.
<hackerfoo> Probably because of the blacklist.
<litghost> hackerfoo: How would the blacklist cause segments to disappear?
<litghost> hackerfoo: Anyways, those warnings from the lookahead generation are almost certainly the problem, now the question is why
<litghost> hackerfoo: Did you shift the grid at all?
<hackerfoo> No
<litghost> hackerfoo: Ah, I know what the problem is. You are using the lower right rather than upper left CMT
<litghost> hackerfoo: And right now the lookahead search locations are fixed, because I just hacked it up
<litghost> hackerfoo: For now, update the search locations with the x/y transpose
<litghost> hackerfoo: We really should replace the segment search algorithm with something smarter
<litghost> hackerfoo: For background, the lookahead needs to sample the segments to produce the segment delays. Currently the search grid locations are fixed (which is wrong in the long term). The correct solution is to sample the grid in a generic fashion (e.g. pick a segment from the upper left, upper right, etc).
<hackerfoo> Which file/script do I need to modify?
<litghost> hackerfoo: For now, update https://github.com/SymbiFlow/vtr-verilog-to-routing/blob/master%2Bwip/vpr/src/route/connection_box_lookahead_map.cpp#L332 to the transpose of the upper left CMT to the lower right CMT
<tpb> Title: vtr-verilog-to-routing/connection_box_lookahead_map.cpp at master+wip · SymbiFlow/vtr-verilog-to-routing · GitHub (at github.com)
<hackerfoo> Okay, thanks.
<litghost> hackerfoo: I'm writing up a bug explaining the current state, and what the long term fix is
<tpb> Title: Connection box lookahead segment search is fixed · Issue #281 · SymbiFlow/vtr-verilog-to-routing · GitHub (at github.com)
<hackerfoo> How would swapping x & y help? Wouldn't that give invalid coordinates? Maybe offset y and flip x around the center?
<litghost> hackerfoo: Not swapping, shifting
<hackerfoo> Okay
<litghost> hackerfoo: Basically you moved the routing region from x1 -> x2 and y1 -> y2, in theory a straight forward translation of the sampling coordinates should work
<litghost> hackerfoo: Ah, I used the word transpose, but translate is probably a better description
<hackerfoo> Isn't X mirrored?
<litghost> hackerfoo: I'd have to check. However most of the segments that failed to be sampled are very common (e.g. general interconnect), so the precise locations are not sensitive
<litghost> hackerfoo: The one's that are most important to mirror are the coordinates that HCLK network start and the BRAM address network (BRAM_CASCADE)
<litghost> hackerfoo: If you only care about getting back to a working buttons test, the HCLK and BRAM sampling is unimportant
<litghost> hackerfoo: I have a couple fixs to prjxray_create_edges.py to finish debugging, and then I can switch gears and revisit generalizing the lookahead sampling. If you have some ideas for generalizing the lookahead sampling, you could also take the bug.
<hackerfoo> Okay. I'm looking at it
adjtm has joined #symbiflow
OmniMancer has quit [Quit: Leaving.]
<sf-slack> <mkurc> CMT tiles L and R are different, at least those with PLLs
<litghost> mkurc: Sorry, what's the context?
<sf-slack> <mkurc> Sorry, I meant the attempt to mirror X coordinate to switch between clock regions
<litghost> mkurc: Ah sure. The current segment definitions do not include anything special for the PLL, so it doesn't require sampling. That will likely need to change, but for now is not an issue
<sf-slack> <mkurc> Ok
<litghost> mkurc: I think fixing https://github.com/SymbiFlow/vtr-verilog-to-routing/issues/281 with a generalized sampling strategy rather than continuing to add fixed locations is probably the path forward. If we find that the generalize algorithm is problematic, then the sampling coordinates should be moved to a command line argument so we can adjust the sampling locations for different grids
<tpb> Title: Map/connection box lookahead segment search is fixed · Issue #281 · SymbiFlow/vtr-verilog-to-routing · GitHub (at github.com)
freemint has joined #symbiflow
freemint has quit [Ping timeout: 240 seconds]
freemint has joined #symbiflow
freemint has quit [Ping timeout: 245 seconds]
Bertl is now known as Bertl_oO
cyndis has quit [Ping timeout: 240 seconds]
freemint has joined #symbiflow
alexhw has quit [Ping timeout: 245 seconds]
alexhw has joined #symbiflow
alexhw has quit [Remote host closed the connection]
cyndis has joined #symbiflow
freemint has quit [Remote host closed the connection]
freemint has joined #symbiflow
jidaigeist has joined #symbiflow
freemint has quit [Ping timeout: 265 seconds]
freemint has joined #symbiflow
freemint has quit [Ping timeout: 240 seconds]
freemint has joined #symbiflow
freemint has quit [Ping timeout: 240 seconds]
freemint has joined #symbiflow
jidaigeist has quit [Ping timeout: 260 seconds]
freemint has quit [Ping timeout: 240 seconds]
alexhw has joined #symbiflow
freemint has joined #symbiflow
<hackerfoo> How do I get a revision for a Conda PACKAGE_SPEC? I'm looking for a working version of VPR to modify, and symbiflow/vtr/master+wip doesn't seem to work.
<litghost> hackerfoo: Sorry, can you clarify?
<litghost> hackerfoo: What are you trying to do?
<litghost> hackerfoo: Conda package -> git revision?
<hackerfoo> I wanted to "fix" the bug we talked about earlier today.
<hackerfoo> But I get this with master+wip and master+wip~: ERROR: Error 1: /home/dusty/src/symbiflow-arch-defs/build/xc7/archs/artix7/devices/xc7a50t-basys3-roi-virt/arch.timing.xml:418 Failed to find port named 'A' on block 'BLK-TL-SLICEL'
<litghost> hackerfoo: Ya, I asked acomodi to fix that, but he hasn't finished his PR yet (see https://github.com/SymbiFlow/symbiflow-arch-defs/pull/1017)
<tpb> Title: updated symbiflow archs to integrate the newly added tiles tag in VTR by acomodi · Pull Request #1017 · SymbiFlow/symbiflow-arch-defs · GitHub (at github.com)
<litghost> hackerfoo: Anyways, the git revision is embedded in the conda package spec
<hackerfoo> Okay. I guess I'll work on the pad -> VPR coordinates stuff then.
<hackerfoo> Using the hex string as a commit doesn't seem to work.
<hackerfoo> Oh well. I've lost enough time on this. I'll just work on other stuff.
* litghost hackerfoo: The conda package for the current VPR version was built here: https://travis-ci.com/SymbiFlow/conda-packages/jobs/237422548
<hackerfoo> I also can't seem to convince vtr's build system to produce an executable that uses multiple cores, despite having the dependencies and VPR_NUM_WORKERS.
<hackerfoo> litghost: Thanks
<litghost> hackerfoo: Um, you mean "make -j$(nproc)"?
<litghost> hackerfoo: VPR_NUM_WORKERS affects the execution of VPR itself, not the build system?
<hackerfoo> No, I mean when running VPR.
<hackerfoo> make -j`nproc` works fine.
<litghost> hackerfoo: Ya, some parts of VPR just don't use multiple threads
<hackerfoo> So much idling. It's frustrating.
<hackerfoo> The conda version seemed to run faster, but I haven't looked into it further.
<litghost> hackerfoo: When you build locally, does CMake report finding tbb library (intel's thread building blocks)?
<litghost> hackerfoo: I believe https://github.com/SymbiFlow/vtr-verilog-to-routing/commit/c478c2b00131b6f6a4a20d34a43f08f2e95d3336 is the commit used for https://travis-ci.com/SymbiFlow/conda-packages/jobs/237422548, unclear what is happening with the "git describe" output
<tpb> Title: Travis CI - Test and Deploy with Confidence (at travis-ci.com)
<hackerfoo> I didn't check this time, but I did install that dependency last time I ran into it. Maybe it can't find it again for some reason.
<litghost> hackerfoo: The string in the conda PACKAGE_SPEC is the hash, but because of mithro's octupus merge strategy, it might not have gotten retrieved from github
<litghost> hackerfoo: I had to run "git fetch origin c478c2b00" to actually pull the revision down
<litghost> hackerfoo: Replace "origin" with whatever remote points to https://github.com/SymbiFlow/vtr-verilog-to-routing
<tpb> Title: GitHub - SymbiFlow/vtr-verilog-to-routing: SymbiFlow WIP changes for Verilog to Routing -- Open Source CAD Flow for FPGA Research (at github.com)
<hackerfoo> Thanks
freemint has quit [Ping timeout: 240 seconds]