<hackerfoo> I'm trying to figure out why there are no RAM features set in fasm after this change: https://github.com/SymbiFlow/symbiflow-arch-defs/pull/663
<tpb> Title: [WIP] reducing RAM primitives to DPRAM32/64 by HackerFoo · Pull Request #663 · SymbiFlow/symbiflow-arch-defs · GitHub (at github.com)
<hackerfoo> Any tips?
<hackerfoo> It's weird, because the RAMs seem to have just disappeared entirely from ram_shifter_*1xs, but no errors. I can't find the INIT bit pattern either.
<hackerfoo> Maybe the problem is in Yosys, because the eblif looks different.
<litghost> hackerfoo: Does the eblif has the right blackbox's?
Bertl_oO is now known as Bertl_zZ
<hackerfoo> I can't even find the .cname for the ram.
<litghost> huh, ya that sounds like a yosys bug
<litghost> did you update the cells_sim.v file?
<hackerfoo> There's no RAM .subckt
<litghost> So not a yosys bug, but a techmap issue
<litghost> Sorry*
<hackerfoo> I just did. I thought that was only for simulation?
<litghost> Yosys uses it for defining blackbox's
<litghost> Yosys tends to just eat poorly defined techmaps, something to watch for
<litghost> it will vomit in the Yosys log
<hackerfoo> Thanks. Now I see it in the eblif and fasm.
citypw has quit [Ping timeout: 245 seconds]
citypw has joined #symbiflow
<hackerfoo> I have RAM32X1S working on hardware!
<hackerfoo> Now I have to fix up the dual port RAMs.
<hackerfoo> RAM64X1D works, but RAM32X1D is broken the same way it was before. At least I fixed X1S.
futarisIRCcloud has joined #symbiflow
<elms> hackerfoo: woot! Progress
<hackerfoo> RAM32X1S now passes through VPR->fasm2v->Vivado->bitstream without errors. I'm going to load it and see what happens.
<hackerfoo> Doesn't work.
<elms> :/
<elms> hackerfoo: you can take it back to fasm and compare right?
<hackerfoo> Yeah, I could do that later, but I really want to get RAM32X1D working, which is what I meant to run through Vivado. It gives and error, though.
<hackerfoo> ERROR: [Vivado 12-2285] Cannot set LOC property of instance 'CLBLM_R_X11Y110_SLICE_X14Y110_RAM32X1D_CD', for bel C6LUT Element SLICE_X14Y110.C5LUT can not be used as a route-through for net CLBLL_R_X13Y110_SLICE_X18Y110_AMUX taged to C5LUT_O5 because a RAM or shift register is placed there
lopsided98_ is now known as lopsided98
<hackerfoo> The `_CD` seems weird. I can't find anything on it, except RAM128X1S_CD in clb_models.py
<elms> hackerfoo: Is that ganging the C and D LUTs?
<hackerfoo> That would be my guess, but I'm only using one.
<hackerfoo> It's using C and D, and not able to route that for some reason.
<hackerfoo> Oh yeah, I am using them both since it's dual port.
<tpb> Title: symbiflow-arch-defs/clb_models.py at 28c64dc905426c56210ce70bc53e0b8cc2a5a9dc · HackerFoo/symbiflow-arch-defs · GitHub (at github.com)
<hackerfoo> Ah, thanks. It's highly ungreppable.
<elms> agree
<tpb> Title: symbiflow-arch-defs/clb_models.py at 28c64dc905426c56210ce70bc53e0b8cc2a5a9dc · HackerFoo/symbiflow-arch-defs · GitHub (at github.com)
<elms> still doesn't help with that error. What is CLBLL_R_X13Y110_SLICE_X18Y110_AMUX in the design?
<litghost> The output wire from the slice
<litghost> From a slice
<elms> ok and it's trying to route through the slice used for the RAM. I guess I'm wondering if there is something the understand from what that net is the the design.
<elms> May be it doesn't matter, but it points to the RAM32x1D not correctly excluding that in VPR.
<hackerfoo> Funny, sometimes the error is different? ERROR: [Vivado 12-2285] Cannot set LOC property of instance 'CLBLM_R_X11Y110_SLICE_X14Y110_RAM32X1D_CD', for bel C6LUT Element SLICE_X14Y110.CFFMUX is not routable
<hackerfoo> Nondeterministic errors are never boring.
<elms> Are you just rerunning just vivado? or through VPR as well.
<hackerfoo> I re-ran VPR when it changed. It seems to be the same from just re-running Vivado.
<elms> good. place and route (eg Synthetic annealing) is pseudo-random. You can record the seed if you need to reproduce. I have not looked at how to do this with VPR.
<hackerfoo> Nevermind. The second one was my fault. I switched SPO/DPO to see if that had anything to do with it.
<hackerfoo> It's just me that's nondeterministic.
<tpb> Title: symbiflow-arch-defs/dram_shifter_32x1d.v at master · SymbiFlow/symbiflow-arch-defs · GitHub (at github.com)
<hackerfoo> It looks like what we're calling DPRAM32 is called RAMD32 by Vivado.
hzeller has quit [Ping timeout: 276 seconds]
<hackerfoo> It's something to do with the packing, because I removed the stub from RAM32X1D in the techmap and it works! Almost. The address is off by 5, but otherwise it works.
<hackerfoo> Somehow one of the SMALL bits are missing in the FASM.
kraiskil has joined #symbiflow
OmniMancer has joined #symbiflow
kraiskil has quit [Read error: Connection reset by peer]
GuzTech has joined #symbiflow
kraiskil has joined #symbiflow
<hackerfoo> Holy shift registers, all of RAM{32,64]X1{S,D} work on hardware! Thanks for the help everyone.
<tpb> Title: [WIP] reducing RAM primitives to DPRAM32/64 by HackerFoo · Pull Request #663 · SymbiFlow/symbiflow-arch-defs · GitHub (at github.com)
kraiskil has quit [Ping timeout: 250 seconds]
citypw has quit [Ping timeout: 258 seconds]
<tpb> Title: RapidWright/Unisim.java at master · Xilinx/RapidWright · GitHub (at github.com)
citypw has joined #symbiflow
kraiskil has joined #symbiflow
_whitelogger has joined #symbiflow
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
kraiskil has quit [Ping timeout: 250 seconds]
Bertl_zZ is now known as Bertl
kraiskil has joined #symbiflow
alexhw[m] has joined #symbiflow
space_zealot has quit [Ping timeout: 255 seconds]
kraiskil has quit [Ping timeout: 258 seconds]
hzeller has joined #symbiflow
kraiskil has joined #symbiflow
OmniMancer has quit [Quit: Leaving.]
kraiskil has quit [Ping timeout: 276 seconds]
hzeller has quit [Ping timeout: 268 seconds]
GuzTech has quit [Remote host closed the connection]
kraiskil has joined #symbiflow
<mithro> kgugala: did those examples for v2x help?
space_zealot has joined #symbiflow
<sf-slack2> <kgugala> @mithro Yes, they are. I'm still going through them. I'll have more time to work on that in a few hours
<mithro> kgugala: I need to do some more which are composite modules
<mithro> kgugala: and more tests for the association for clocked inputs / outputs
kraiskil has quit [Read error: Connection reset by peer]
<sf-slack2> <kgugala> + some that instantiate the above so we can test if the clock signals are correctly inferred in the top level
kraiskil has joined #symbiflow
<mithro> kgugala: So the is_registered function seems wrong
<sf-slack2> <kgugala> @mithro yes
<sf-slack2> <kgugala> I think to solve this properly we should follow the connection path from considered input to the first $dff
<sf-slack2> <kgugala> I mean the `is_registered` function should do that
<mithro> kgugala: You should be using yosys for this
<tpb> Title: symbiflow-arch-defs/run.py at dc45861228a81ade14f22d828856a575f9b471d9 · SymbiFlow/symbiflow-arch-defs · GitHub (at github.com)
<mithro> # Find things which affect the given output
<mithro> # show w:*D_IN_0 %a %ci*
<sf-slack2> <kgugala> thanks, I was about to ask for an example
<sf-slack2> <kgugala> this is really helpful
<tpb> Title: Yosys Open SYnthesis Suite :: Command Reference :: select (at www.clifford.at)
adjtm has quit [Ping timeout: 258 seconds]
<mithro> kgugala: Things seem to work better when you do that reg change...
<mithro> kgugala: Looking at how we can make that warning an error
<sf-slack2> <kgugala> Yosys stops complaining about assigning a wire i always block
adjtm has joined #symbiflow
<sf-slack2> <kgugala> @mithro can we assume the if an output is affected by an input, and the output has an associated clock, the input should also have this clock associated?
tux3 has quit [Quit: Quitting]
tux3 has joined #symbiflow
<mithro> kgugala: Unsure
<sf-slack2> <kgugala> I implemented such approach and it doesn't seem to break other tests
<sf-slack2> <kgugala> I'll push that in a minute
kraiskil has quit [Read error: Connection reset by peer]
<mithro> kgugala: I pushed an update to how yosys runs
Bertl is now known as Bertl_oO
<sf-slack2> <kgugala> yeah I see that
<sf-slack2> <kgugala> @mthro I see you push-forced the v2x-clock-tests
<sf-slack2> <kgugala> it conflicts with mine changes, I resolved the conflicts, but it'd be nicer if I rebase the whole thing
<sf-slack2> <kgugala> this will require push -f
<tpb> Title: symbiflow-arch-defs/vlog_to_model.py at dc45861228a81ade14f22d828856a575f9b471d9 · SymbiFlow/symbiflow-arch-defs · GitHub (at github.com)
<mithro> kgugala: Were where your changes?
<sf-slack2> <kgugala> in dff_two_clocks (both verilog and golden_model)
<mithro> kgugala: I mean which repo were you pushing too?
<sf-slack2> <kgugala> I just pushed the changes without rebasing
<tpb> Title: vlog_to_model: correctly handle clock association and multiple clks · mithro/symbiflow-arch-defs@ffbb1d4 · GitHub (at github.com)
<sf-slack2> <kgugala> it fixes the #667
<sf-slack2> <kgugala> ale also handles multiple clock association
<mithro> kgugala: You should push your version of my branch to another repo too
<mithro> Otherwise I can't access the commits
<sf-slack2> <kgugala> the changes you made there were actually doing the same I did (I defined the verilog outputs as regs)
<sf-slack2> <kgugala> I just resolved the conficts there
<sf-slack2> <kgugala> @mithro the relevant change is in the commit I linked above
<sf-slack2> <kgugala> + golden model change so it fits what is generated by the script
<mithro> kgugala: Sure, but if you push to your own repo, then I won't accidentally push over the top of your changes :-)
<mithro> kgugala: I rebased your changes
<sf-slack2> <kgugala> I see
<sf-slack2> <kgugala> I pushed the dff_two_clocks golden model update
<sf-slack2> <kgugala> it's cosmetic
<mithro> kgugala: Why is your change needed?
<tpb> Title: WIP: v2x clock tests by mithro · Pull Request #664 · SymbiFlow/symbiflow-arch-defs · GitHub (at github.com)
<sf-slack2> <kgugala> it switches c1 and c2 for port b (it's cosmetic, but that was causing diff to fail)
<mithro> kgugala: Is cmake not running the golden model through xmlsort.xml ?
<sf-slack2> <kgugala> I generated new golden model with 'update_golden_model' target
<sf-slack2> <kgugala> @mithro, yes it is but it does not fix this:
<sf-slack2> <kgugala> - <port clock="c1 c2" combinational_sink_ports="o2 o1" name="b"/> + <port clock="c2 c1" combinational_sink_ports="o2 o1" name="b"/>
<sf-slack2> <kgugala> c1 and c2 are switched
<mithro> Ahh...
<sf-slack2> <kgugala> as I said it is cosmetic
<tpb> Title: Include the v2x model + pb_type xml files into VPR architecture XML file and check VPR can load it · Issue #668 · SymbiFlow/symbiflow-arch-defs · GitHub (at github.com)
space_zealot has quit [Remote host closed the connection]
space_zealot has joined #symbiflow
<mithro> kgugala: I'll work on #668 if you are working on the v2x stuff
<sf-slack2> <kgugala> Ok
space_zealot has quit [Remote host closed the connection]
space_zealot has joined #symbiflow
<hackerfoo> How can I set a FASM feature based on the input to a mux in VPR? Do I need to use modes instead?
<hackerfoo> I can see the equivalent to what I want for <direct>
<litghost> You mean fasm_mux?
<tpb> Title: symbiflow-arch-defs/common_slice.pb_type.xml at master · SymbiFlow/symbiflow-arch-defs · GitHub (at github.com)
<hackerfoo> Thanks, I think so. Is the synax a list of "<input> = <fasm feature name>"?
<hackerfoo> And I guess "NULL" is a keyword for not adding anything.
<litghost> Yes
<elms> hackerfoo: I think that is accepted, but use `input : feature` as shown here https://github.com/SymbiFlow/vtr-verilog-to-routing/blob/master%2Bwip/utils/fasm/test/test_fasm_arch.xml#L146-L149
<tpb> Title: vtr-verilog-to-routing/test_fasm_arch.xml at master+wip · SymbiFlow/vtr-verilog-to-routing · GitHub (at github.com)
<tpb> Title: symbiflow-arch-defs/common_slice.pb_type.xml at master · SymbiFlow/symbiflow-arch-defs · GitHub (at github.com)
<litghost> NONE is actually the keyword, not NULL
<litghost> Sorry, NULL is correct, opps
<litghost> Might be some errors at L306
<hackerfoo> elms: Why use `input : feature`? `input = feature` is used everywhere else.
<hackerfoo> If we're changing the syntax, I suggest `->` or `=>`.
<elms> Both are supported and I think we should go back and change existing uses.
<hackerfoo> Inconsistency is worst: http://i.imgur.com/vOWAAUK.png
<tpb> Title: vtr-verilog-to-routing/fasm.rst at master · verilog-to-routing/vtr-verilog-to-routing · GitHub (at github.com)
<hackerfoo> If we're going to change it, it's probably best to do in a single PR.
<hackerfoo> As much as possible, at least.
<elms> that's valid.
space_zealot has quit [Ping timeout: 246 seconds]
<litghost> For now, stay consistent with the XML's around it. I believe ice40 is using the ":" and xc7 is using "=".
<litghost> hackerfoo: We cannot use ">" because XML
<litghost> hackerfoo: Much sadness
<tpb> Title: FPGA Assembly (FASM) Output Support Verilog-to-Routing 8.0.0-dev documentation (at symbiflow.readthedocs.io)
<litghost> elms: Yes
<hackerfoo> Can I use the output of a mux directly as the input to another? "Message: Syntax error processing port string 'B_DRAM.DI1 SLICEM_MODES.AI' (output from interconnect from parent is not an input or clock pin)"
synaption[m] has joined #symbiflow
<litghost> hackerfoo: Nope
<litghost> hackerfoo: That's the reason for the "PARENT_DI" stuff
<litghost> hackerfoo: It is simply converting the input port to an output port
<litghost> hackerfoo: Or vise-versa
<litghost> hackerfoo: Been a while since I messed with this stuff
<hackerfoo> I guess I need an internal wire.
<elms> litghost: has there been any discussion around how to support different speed grades?
<litghost> elms: Funny that you mention it
<tpb> Title: PVT corner timing models · Issue #551 · verilog-to-routing/vtr-verilog-to-routing · GitHub (at github.com)
<litghost> elms: Speed grades are just another take on the corner analysis, kind of
<litghost> elms: If VPR supported multiple corners, and we could select which corners we used in analysis, that would cover speed grades
<elms> litghost: makes sense. Last week I thought about it and realized forking pb_types would be terrible. Do you think the difference in speed grades are uniform enough to have little impact on PnR?
<litghost> elms: Hard to say, I lack an intuition on that topic
<elms> If it just adds constants I would imagine little impact on the routing for example. It would impact fmax.
<elms> ok
<litghost> elms: Given that we are controlling the import, we can just emit pbtypes and rrgraphs at a particular speed grade, yes?
<elms> litghost: yes, but we would have to generate one for each grade which would be mostly identical except for the timing. Or just emit for 1 speed grade and say that's good enough for now.
<litghost> elms: I don't think we are going to be able to avoid that without a symbolic solution to https://github.com/verilog-to-routing/vtr-verilog-to-routing/issues/551
<tpb> Title: PVT corner timing models · Issue #551 · verilog-to-routing/vtr-verilog-to-routing · GitHub (at github.com)
<elms> litghost: I think this points to another aspect that could be optimized in the representation format. We will want an 1:N mapping for timing. Yes I agree about that issue. But I think as we look forward to other formats, it will be better to separate them to a separate data structure
<litghost> elms: Sure, which is what I mean by a symbolic solution, e.g. a side lookup
tpb has quit [Remote host closed the connection]
tpb has joined #symbiflow