*** tpb <[email protected]> has joined #yosys | 00:00 | |
*** DiffieHellman <DiffieHellman!~Username@user/curve25519chacha> has quit IRC (Remote host closed the connection) | 00:30 | |
*** DiffieHellman <DiffieHellman!~Username@user/curve25519chacha> has joined #yosys | 00:31 | |
*** so-offish1 <so-offish1!~so-offish@2610:148:610:2b11::2> has quit IRC (Quit: Leaving) | 00:45 | |
*** tokamak <[email protected]> has quit IRC (Quit: ZNC 1.8.2+deb2build5 - https://znc.in) | 00:52 | |
*** lumo_e <[email protected]> has quit IRC (Quit: Quit) | 00:53 | |
*** tokamak <[email protected]> has joined #yosys | 00:53 | |
*** Lord_Nightmare2 <Lord_Nightmare2!Lord_Night@user/lord-nightmare/x-3657113> has joined #yosys | 00:55 | |
*** Lord_Nightmare <Lord_Nightmare!Lord_Night@user/lord-nightmare/x-3657113> has quit IRC (Ping timeout: 255 seconds) | 00:56 | |
*** Lord_Nightmare2 is now known as Lord_Nightmare | 00:58 | |
*** bl0x_ <[email protected]> has joined #yosys | 02:58 | |
*** bl0x <[email protected]> has quit IRC (Ping timeout: 248 seconds) | 03:00 | |
*** citypw <citypw!~citypw@gateway/tor-sasl/citypw> has joined #yosys | 03:20 | |
*** kivikakk <[email protected]> has joined #yosys | 05:56 | |
*** tlwoerner <[email protected]> has quit IRC (Remote host closed the connection) | 06:17 | |
*** tlwoerner <[email protected]> has joined #yosys | 06:17 | |
*** ec <ec!~ec@gateway/tor-sasl/ec> has quit IRC (Ping timeout: 255 seconds) | 06:31 | |
*** ec <ec!~ec@gateway/tor-sasl/ec> has joined #yosys | 06:34 | |
*** ec <ec!~ec@gateway/tor-sasl/ec> has quit IRC (Remote host closed the connection) | 06:34 | |
*** ec <ec!~ec@gateway/tor-sasl/ec> has joined #yosys | 06:35 | |
*** kivikakk <[email protected]> has quit IRC (Quit: Leaving.) | 07:06 | |
*** FabM <FabM!~FabM@2a03:d604:103:600:2e60:8c7c:e8fb:7990> has joined #yosys | 07:12 | |
*** kivikakk <[email protected]> has joined #yosys | 11:42 | |
*** ec <ec!~ec@gateway/tor-sasl/ec> has quit IRC (Ping timeout: 255 seconds) | 13:21 | |
*** ec <ec!~ec@gateway/tor-sasl/ec> has joined #yosys | 13:22 | |
*** dormito <dormito!~dullfire@user/dormito> has quit IRC (Ping timeout: 248 seconds) | 14:19 | |
*** dormito <dormito!~dullfire@user/dormito> has joined #yosys | 14:20 | |
*** DiffieHellman <DiffieHellman!~Username@user/curve25519chacha> has quit IRC (Ping timeout: 255 seconds) | 14:25 | |
*** DiffieHellman <DiffieHellman!~Username@user/curve25519chacha> has joined #yosys | 14:27 | |
*** citypw <citypw!~citypw@gateway/tor-sasl/citypw> has quit IRC (Ping timeout: 255 seconds) | 15:00 | |
*** nak <nak!~nak@yosys/nak> has quit IRC (Ping timeout: 268 seconds) | 15:29 | |
*** nak <nak!~nak@yosys/nak> has joined #yosys | 15:31 | |
*** nak <nak!~nak@yosys/nak> has quit IRC (Ping timeout: 248 seconds) | 15:37 | |
*** nak <nak!~nak@yosys/nak> has joined #yosys | 15:39 | |
*** nak <nak!~nak@yosys/nak> has quit IRC (Ping timeout: 268 seconds) | 15:57 | |
*** nak <nak!~nak@yosys/nak> has joined #yosys | 15:58 | |
*** nak <nak!~nak@yosys/nak> has quit IRC (Ping timeout: 248 seconds) | 16:10 | |
*** nak <nak!~nak@yosys/nak> has joined #yosys | 16:12 | |
*** nak <nak!~nak@yosys/nak> has quit IRC (Ping timeout: 255 seconds) | 16:24 | |
*** nak <nak!~nak@yosys/nak> has joined #yosys | 16:26 | |
*** so-offish <so-offish!~so-offish@2610:148:610:2b11::2> has joined #yosys | 16:28 | |
*** nak <nak!~nak@yosys/nak> has quit IRC (Ping timeout: 276 seconds) | 16:53 | |
*** nak <nak!~nak@yosys/nak> has joined #yosys | 16:55 | |
*** crzwdjk <[email protected]> has joined #yosys | 17:04 | |
*** nak <nak!~nak@yosys/nak> has quit IRC (Ping timeout: 255 seconds) | 17:19 | |
*** nak <nak!~nak@yosys/nak> has joined #yosys | 17:21 | |
*** nak <nak!~nak@yosys/nak> has quit IRC (Ping timeout: 276 seconds) | 17:30 | |
*** nak <nak!~nak@yosys/nak> has joined #yosys | 17:32 | |
*** crzwdjk <[email protected]> has quit IRC (Quit: Client closed) | 17:43 | |
so-offish | How do I pack/place/route items with the Python API in NextPNR | 18:14 |
---|---|---|
tnt | so-offish: I'm not sure if you can trigger the pass. But you can add scripts at various stage of the process. I'm only used them to place things by setting the BEL property basically. | 19:21 |
so-offish | tnt: Yeah I saw that capability - I think I figured out how to use it by looking at people's stuff on Github | 19:22 |
so-offish | tnt: but I would need to generate like 100 slightly different copies of a ring oscillator, I thought it might be easier to do with just Python and the one output .json | 19:23 |
mewt_ | .32 | 19:30 |
so-offish | tnt: maybe that's stupid. | 19:34 |
so-offish | tnt: I'm not sure yet. | 19:34 |
*** FabM <FabM!~FabM@armadeus/team/FabM> has quit IRC (Ping timeout: 248 seconds) | 20:03 | |
lofty | so-offish: you can just use (* BEL="..." *) to manually place them. there's no need to bother with packing/routing | 20:48 |
so-offish | lofty: But I need something like 100 of them, and I need them to be routed exactly the same way (just in different locations) | 21:08 |
so-offish | lofty: like I need bitstream 000 to have it in BEL=X0/Y0/SLICEA, in bitstream 001 I need it in BEL=X1/Y0/SLICEA, bitstream 002.... etc | 21:10 |
so-offish | lofty: They need to be "stamped" across the part with exactly the same routing | 21:10 |
so-offish | If I just needed one, and I could just mess around until I got the 1, I'd be golden. :) | 21:11 |
tnt | so-offish: I don't think there is anything to control routing unfortunatey. | 21:13 |
lofty | That stuff mostly isn't exposed through python because it's ungodly slow to do that | 21:14 |
lofty | I'm...a little confused about why you need to do that, but um | 21:16 |
so-offish | Silicon supply chain research. | 21:16 |
so-offish | silicon security supply chain research. I guess. | 21:16 |
lofty | How delightfully vague | 21:16 |
so-offish | lol | 21:16 |
so-offish | If research doesn't work out for me, I'll try politics next. | 21:17 |
lofty | Well, consider that nextpnr is a timing driven router, so it's going to pick the shortest paths | 21:18 |
lofty | So I think even if you don't explicitly tell it the routing path, it should be very predictable if you constraint placement | 21:18 |
lofty | *constrain | 21:18 |
so-offish | lofty: That's a brilliant point, thank you. | 21:18 |
so-offish | lofty: Maybe just moving the BELs around in the Python API is enough! | 21:19 |
lofty | Granted, I can't promise anything, because nextpnr's approach to combinational loops is to throw its hands in the air and assume the user knows what they're doing | 21:19 |
so-offish | lofty: Oh shoot. --ignore-loops makes it explicitly not timed. | 21:20 |
lofty | Yes, which is why when someone goes "I need to make a ring oscillator", my instinct is "no, you probably don't". | 21:21 |
lofty | I've seen people use them for true RNGs, but it's definitely weird | 21:22 |
lofty | (combinational loops are flat-out forbidden in Yosys RTLIL, so nextpnr does not see them often...) | 21:22 |
tnt | so-offish: I'm not sure about the ECP5 but routing resource are not necessarely uniform. i.e. if you create two identical loop and place them for instance one at Y=10 and the other at Y=20, the available wires might not be the same. | 21:34 |
tnt | So you need to check the routing grid to see "how it repeats" to make sure to align your instances to that. | 21:34 |
whitequark | I guess the research relates somehow to fingerprinting ICs | 21:41 |
so-offish | tnt: I think at various "edges" there are aliased nets within the fabric that are covered by special routing rules? (I am trying to use all the NextPNR terminology) | 21:46 |
so-offish | lofty: I haven't had a problem with Yosys so far in combinatorial loop land. NextPNR throws a fit and dies unless you include --ignore-loops, which again breaks the concept of "timing" in total for the device. | 21:48 |
so-offish | whitequark: It turns out you can do a lot with that data; fingerprinting is a great example. | 22:00 |
lofty | so-offish: the official capitalisation of nextpnr is nextpnr and everybody looks a little bit oddly whenever it's spelt differently :p | 22:22 |
so-offish | lofty: I'm sorry; thanks for the correction. :) | 22:23 |
so-offish | I think I saw that on a conference slide somewhere | 22:23 |
lofty | so-offish: I mentioned that RTLIL forbids combinational loops, which is true: so Yosys very, very eagerly converts them into latches | 22:23 |
lofty | It's the rare "undefined behaviour" of the IL. | 22:23 |
lofty | (other than 'x, which, well, it's 'x) | 22:24 |
so-offish | lofty: Ah, so I should add an extra check (within Yosys) before I get to nextpnr to make sure I'm really getting the loop I expect? | 22:27 |
so-offish | there is literally a ring oscillator example in Claire's slide at 35C3: https://youtu.be/Zi9gaSPFqM0?t=1769 | 22:35 |
so-offish | lofty tnt whitequark thank you all for helping me. Hopefully I can contribute back at some point. | 23:04 |
*** nonchip <[email protected]> has quit IRC (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) | 23:09 | |
*** nonchip <[email protected]> has joined #yosys | 23:09 | |
*** so-offishul <[email protected]> has joined #yosys | 23:40 | |
*** so-offish1 <[email protected]> has joined #yosys | 23:41 | |
*** so-offish <so-offish!~so-offish@2610:148:610:2b11::2> has quit IRC (Ping timeout: 246 seconds) | 23:44 | |
*** so-offish <so-offish!~so-offish@2610:148:610:2b11::2> has joined #yosys | 23:45 | |
*** so-offishul <[email protected]> has quit IRC (Ping timeout: 248 seconds) | 23:45 | |
*** so-offish1 <[email protected]> has quit IRC (Ping timeout: 255 seconds) | 23:45 | |
*** kivikakk1 <[email protected]> has joined #yosys | 23:55 |
Generated by irclog2html.py 2.17.2 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!