galv[m] has quit [Remote host closed the connection]
xobs has quit [Read error: Connection reset by peer]
mrhat2010[m] has quit [Remote host closed the connection]
galv[m] has joined #symbiflow
xobs has joined #symbiflow
mrhat2010[m] has joined #symbiflow
<duck2> i poked around with sax parsing
<duck2> it's not possible to do right away due to the edge->switch->node dependency
<litghost> duck2: How so?
<duck2> but it's possible to first incrementally read into a "raw rr graph" struct, then use the struct to build graph. this is very much like flatbuffers so i'm hesitant to do it, but i think at the worst case i'll have made a tool to convert large rr graphs to flatbuffers?
<litghost> duck2: Can you create an issue on https://github.com/SymbiFlow/vtr-verilog-to-routing and explain your finding with SAX?
<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)
<litghost> duck2: Because I'm not following why the edge->switch->node issue would be a problem
<litghost> duck2: I think it is safe to assume that edge's will appear after switches and nodes, and you could always do some kind of deferal on the off change that isn't true
<duck2> litghost: by "right away" i mean just stuffing data into device_ctx as it comes
<litghost> duck2: I think we can just assert that edges must come after nodes and switches, does that solve what you are thinking about?
<duck2> i think it does. if nodes, switches and edges appear in this order, the reader won't have to cache much data
<litghost> duck2: The XML writer for VPR always writes switches before nodes and nodes before edges
<litghost> duck2: And you could always have a dual path in the parser, seen switch+node -> insert edge immediately, not either switch/node -> put edges in a vector and then insert the edges into the nodes.
<litghost> duck2: Maybe file an issue with the upstream project and ask if it is safe to assume the order of tags
<duck2> what would be a "maximum" size of a rr_graph.xml?
<litghost> duck2: billions of edges?
<litghost> duck2: Like really really big
<duck2> i'm asking this to know if the "raw graph" struct can be a problem. whereas eliminating the struct would save up some more memory, having it would be very helpful because both the current reader and your flatbuffers reader assume a "reference structure" in memory
<duck2> i'm afraid if i rewrite the reader fns for reading in a single pass(for instance, process_seg_id() looks up segments for every node after everything is loaded), i might create a rather buggy version
<duck2> so this is another side
<litghost> I think keeping two copies is undesirable. How much do you think you would need to keep aside?
<duck2> i plan to translate the whole file to something like the flatbuffers schema. i think it will occupy ~1/3 of the xml file size in memory. maybe a far estimate?
<litghost> Okay
<duck2> (just realized xc7's rr_graph.xml gzips to 52mb)
citypw has joined #symbiflow
<litghost> FYI, the flatbuffer version of the xc7 graph was ~150 MB uncompressed
citypw has quit [Remote host closed the connection]
citypw has joined #symbiflow
Bertl is now known as bertl_zZ
bertl_zZ is now known as Bertl_zZ
OmniMancer has joined #symbiflow
<sf-slack1> <mkurc> Update on tile grid split: I'm still struggling to make the PicoSoC work. I've just discovered that for the PicoSoC I'm getting duplicated statements in `fasm` file. This is very wrong.
citypw has quit [Ping timeout: 272 seconds]
citypw has joined #symbiflow
citypw has quit [Ping timeout: 272 seconds]
<sf-slack1> <mkurc> I've also discovered that `fasm` files generated even without my modifications also contain some statement duplicates. Is it an intended behavior ?
<sf-slack1> <tmichalak> @mkurc: what happens at the next stage? what does fasm2frames say about this input? I would expect it to fail if such input was considered an error.
<sf-slack1> <mkurc> The fasm2frames passes correctly. It does not consider this an error. Therefore I'm curious whether the fasm file can have duplicated statements.
<sf-slack1> <tmichalak> Then I guess the duplicate entry is simply ignored. The question to ask here then is whether the entry that turned out to be a duplicate should be in fact a different feature, i.e. the prefix identifier might be incorrect
<sf-slack1> <tmichalak> The xc7frames2bit tool is pretty much ready (https://github.com/SymbiFlow/prjxray/pull/705) and I was wondering what would be the best next step
<tpb> Title: Implement the xc7frames2bit tool by tmichalak · Pull Request #705 · SymbiFlow/prjxray · GitHub (at github.com)
<sf-slack1> <tmichalak> In https://github.com/SymbiFlow/symbiflow-arch-defs/issues/418 one of the tasks says: "Modify harness generation to output all bits outside of ROI and add them to "required_features" in the design.json" maybe I could take care of that?
<tpb> Title: Remove use of design.bit (ROI bitstream harness) · Issue #418 · SymbiFlow/symbiflow-arch-defs · GitHub (at github.com)
Bertl_zZ is now known as Bertl
<sf-slack1> <acomodi> slicem and modes fix update: with this commit I have been able to add the test on the `Differing modes` issue. https://github.com/SymbiFlow/vtr-verilog-to-routing/pull/29/commits/8dfae8f4a387e3792dab427784a0a12f8aa4bf94
<tpb> Title: Differing modes between lib_nets fix by acomodi · Pull Request #29 · SymbiFlow/vtr-verilog-to-routing · GitHub (at github.com)
<sf-slack1> <acomodi> I have tested that, without the slicem fix the regression test fails, while, by using the fixed VPR version the issue is correctly solved
<sf-slack1> <acomodi> The only thing is that I have been able to isolate the `SLICEM` pb_type and it is more than 2000 lines long. I could try to further reduce it to have something more comprehensible, but I think this is a good starting point
<litghost> mkurc: Duplicated FASM statements are expected and allowed.
<sf-slack1> <mkurc> @litghost Ok, thanks
<litghost> tmichalak: Sure
<litghost> acomodi: First thing I would try is to simplify the FF tree, for example try getting rid of the 5FF's
<litghost> acomodi: Might also see if you can safely remove the F8MUX and if yes, the F7MUX's
<sf-slack1> <acomodi> litghost: All right
<sf-slack1> <mkurc> @litghost: I am still fighting with implementation of the PicoSoC using the split grid. It is not working on the hardware. Neither does the Murax. However, simpler designs do work fine (eg. UART taken from the PicoSoC which continuously sends content of an initialized BRAM).
<litghost> mkurc: Interesting. Are you using the slower clock speed harness?
<sf-slack1> <mkurc> I am running out of ideas what can be wrong. I am pretty sure that I've ruled out incorrect connection definitions.
<sf-slack1> <mkurc> I tried slowing the PicoSoC down to 12.5 MHz. I can try slowing down even further.
<sf-slack1> <mkurc> I am using the same harness and the clock division is implemented on logic (toggling FFs)
<litghost> mkurc: Interesting. I'm actively working on the FASM to Verilog converter. It still needs testing and BRAM support, but that will enable use to check the picosoc bitstream in simulation. I'm aiming to have BRAM support this week. In order for the FASM to Verilog converter to work, I do need to fix https://github.com/SymbiFlow/prjxray/pull/727 to work on K7 and Z7.
<tpb> Title: Solve remaining bits in the ROI by litghost · Pull Request #727 · SymbiFlow/prjxray · GitHub (at github.com)
<sf-slack1> <mkurc> Having FASM to verilog would be great
<sf-slack1> <mkurc> @litghost: Actually, I have a question whether I am doing the connection definition correctly.
<sf-slack1> <mkurc> Here is what I did: I split the CLB (with sites SLICE_X0 and SLICE_X1) to CLB_SLICE_X0 (with one site SLICE_X0) and CLB_SLICE_X1 (with one site SLICE_X1).
<sf-slack1> <mkurc> For each new tile type I left only pips related to its site and removed the others. So the pips are split among new tile types.
<sf-slack1> <mkurc> But I left all tile wires so they can serve as a pass-trhough connection when reaching from eg. INT_L through CLB_SLICE_X0 to CLB_SLICE_X1.
<sf-slack1> <mkurc> And the problem is that the CLB_SLICE_X1 now contains the same wires as CLB_SLICE_X0. But wires related to SLICE_X0 in CLB_SLICE_X1 are not connected to any site within it.
<sf-slack1> <mkurc> Can it cause any problems ?
<litghost> mkurc: Depends. Have you pushed your latest PR?
<sf-slack1> <mkurc> I need to check, but I think yes
<tpb> Title: WIP - Xilinx Series 7 split CLB tiles into two tiles types (SLICEL / SLICEM) by mkurc-ant · Pull Request #435 · SymbiFlow/symbiflow-arch-defs · GitHub (at github.com)
<sf-slack1> <mkurc> I think I will prepare some drawings which show the situation.
OmniMancer has quit [Quit: Leaving.]
<litghost> mkurc: How are you testing the new tileconn.json?
<sf-slack1> <mkurc> By feeding it through `prxray_` scripts.
<sf-slack1> <mkurc> And using it to do the P&R.
<sf-slack1> <mkurc> Also I've made a few crude utility scripts that allows me to render a section of the FPGA grid with connections to a SVG file.
<litghost> mkurc: That's not testing. You should write a test that ensures that the nodes from your tileconn.json are the same nodes as before.
<litghost> mkurc: tileconn.json as a file format is a tricky thing, small changes can have big effects. You need to ensure formally the the nodes from both tileconn.json are the same.
<sf-slack1> <mkurc> You mean in the final routing graph ?
<litghost> mkurc: Sort of. You need to be sure that all sink instances connect to the same source instances. When tileconn.json is first formed, this is done be comparing that all nodes (groups of wires) remain the same.
<litghost> mkurc: You can't do the check that simply, because you have split the wires.
<litghost> mkurc: But you can verify that every sink is connected to the correct sources
<sf-slack1> <mkurc> Mhm
<sf-slack1> <mkurc> Tile grid split illustration: https://pasteboard.co/I6a5iCL.png
<tpb> Title: Pasteboard - Uploaded Image (at pasteboard.co)
<litghost> mithro: ?
<mithro> Diagram comparing Xilinx Slices to Intel ALMs I found in a paper I was reading earlier
<litghost> Ah
<tpb> Title: VtR Python API Design Doc - Google Docs (at docs.google.com)
<elms> mithro: this is the doc used when developing lib/rr_graph graph.py and channel.py?
<mithro> elms: No, this is a doc to try and unify symbiflow and prga and provide an overall Python API for vtr xml generation
<elms> prga?
<tpb> Title: Welcome to the documentation of Princeton Reconfigurable Gate Array! Princeton Reconfigurable Gate Array 0.1 alpha documentation (at prga.readthedocs.io)
<elms> For anyone with thoughts on including hardware testing in our CI please discuss here: https://github.com/SymbiFlow/ideas/issues/25
<tpb> Title: Testing on hardware · Issue #25 · SymbiFlow/ideas · GitHub (at github.com)
<mithro> litghost: Should I be regenerating the database with your new ROI changes?
<litghost> mithro: Not yet, need to get https://github.com/SymbiFlow/prjxray/pull/727 merges
<tpb> Title: Solve remaining bits in the ROI by litghost · Pull Request #727 · SymbiFlow/prjxray · GitHub (at github.com)
<mithro> litghost: Well, there is new ppips files already, right?
<litghost> mithro: Those are of limited value without https://github.com/SymbiFlow/prjxray/pull/727
<tpb> Title: Solve remaining bits in the ROI by litghost · Pull Request #727 · SymbiFlow/prjxray · GitHub (at github.com)
<tpb> Title: Merge pull request #885 from YosysHQ/clifford/fix873 · YosysHQ/yosys@8c0740b · GitHub (at github.com)
<mithro> litghost: Linked from https://github.com/YosysHQ/yosys/issues/873
<tpb> Title: Regression when initial-ising reg used on negedge clock · Issue #873 · YosysHQ/yosys · GitHub (at github.com)
<litghost> Ya, I saw that
<litghost> Opps
<litghost> Makes sense when you see the fix
<mithro> litghost: Guess there should probably be some type of testing for it?
<litghost> mithro: On the yosys side or our side?
<litghost> mithro: FYI, we don't support negative clocks yet, so we can't test for it yet
<mithro> litghost: Probably on the yosys side?
<litghost> mkurc: In doing the fasm 2 verilog I may have located a bug in the way we emit the routing graph. Can you check for the following condition:
<litghost> FAN_ALT[0-7] and BYP_ALT[0-7] that is being routed to both FAN[0-7]/BYP[0-7] and FAN_BOUNCE[0-7]/BYP_BOUNCE[0-7]
<litghost> mkurc: I think the FAN_ALT and BYP_ALT output pips may be mutially exclusive, but no bit indicates this behavior
<litghost> mkurc: If my theory is true, then the routing graph could enable an invalid configuration
<litghost> mkurc: Never mind, the routing implementation is correct, must be a bug in fasm 2 verilog
lopsided98_ has quit [Quit: Disconnected]
<litghost> mkurc: I've tested https://github.com/SymbiFlow/symbiflow-arch-defs/pull/473 on some designs out of both Vivado and VPR. It seems to be working, with differing routing. I haven't added the TCL statements to apply the existing routing
<tpb> Title: WIP: Initial 7-series FASM to verilog conversion by litghost · Pull Request #473 · SymbiFlow/symbiflow-arch-defs · GitHub (at github.com)
tpb has quit [Remote host closed the connection]
tpb has joined #symbiflow