*** tpb <[email protected]> has joined #yosys | 00:00 | |
*** ec <ec!~ec@gateway/tor-sasl/ec> has quit IRC (Remote host closed the connection) | 05:19 | |
*** ec <ec!~ec@gateway/tor-sasl/ec> has joined #yosys | 05:19 | |
*** xutaxkamay <xutaxkamay!~xutaxkama@2a01:e0a:a7e:1050:4488:3146:d3e2:bba0> has quit IRC (Ping timeout: 248 seconds) | 05:56 | |
*** xutaxkamay <[email protected]> has joined #yosys | 05:57 | |
*** FabM <FabM!~FabM@2a03:d604:114:5b00:21de:9d5d:443f:66aa> has joined #yosys | 07:37 | |
*** krispaul <[email protected]> has joined #yosys | 08:03 | |
*** kristianpaul <kristianpaul!~paul@user/kristianpaul> has quit IRC (Ping timeout: 252 seconds) | 08:04 | |
*** krispaul <[email protected]> has quit IRC (Ping timeout: 252 seconds) | 08:54 | |
*** orhosko <[email protected]> has joined #yosys | 11:05 | |
*** so-offish <so-offish!~so-offish@2610:148:610:2b10::30> has quit IRC (Read error: Connection reset by peer) | 11:14 | |
*** so-offish <[email protected]> has joined #yosys | 11:15 | |
orhosko | Hello everyone, I was using nextpnr-himbaechel and I kinda stuck. Is this the right place to ask for? | 11:59 |
---|---|---|
orhosko | My problem was using ROM16 modules is possible in gowin ide but I couldn't managed to use with nextpnr. I haven't found any issues about it. Is it not implemented or am I missing something? | 11:59 |
Semisol[m] | orhosko: ROM16 is a LUT with all inputs as address select | 12:01 |
Semisol[m] | It will synthesize like regular LUTs, and I believe Yosys can infer it if you use an asynchronous read-only memory | 12:01 |
lofty | yeah, the answer is to just use soft logic for it | 12:02 |
orhosko | firstly thanks a lot for quick response. I was getting 'ERROR: Unable to place cell 'rom.rom16_inst_5', no BELs remaining to implement cell type 'ROM16'' and there are many LUTs available(using only 1%). If I understand correctly its due to my implementation. I was trying the IP generator from the gowin ide so maybe I need to look into produced | 12:04 |
orhosko | module.. | 12:04 |
Semisol[m] | orhosko: `ROM16` is an abstraction | 12:07 |
Semisol[m] | if possible, you should use a platform-independent async ROM | 12:08 |
Semisol[m] | that, and things like case statements, will automatically get turned into ROMs, and could get further optimized by yosys | 12:08 |
Semisol[m] | if you must manually do it, use a platform LUT, set the init values to the ROM contents, and use I0-I3 as address select | 12:09 |
orhosko | Ohh thanks it makes sense now. The produced IP from the IDE looks something like this | 12:20 |
orhosko | ``` | 12:20 |
orhosko | ROM16 rom16_inst_0 ( | 12:20 |
orhosko | .DO(dout[0]), | 12:20 |
orhosko | .AD(ad[3:0]) | 12:20 |
orhosko | ); | 12:20 |
orhosko | defparam rom16_inst_0.INIT_0 = 16'h0002; | 12:20 |
orhosko | ``` | 12:20 |
orhosko | and if I understand correctly I can implement this by myself easily. It is just LUTs. However there are still some points I haven't understood. First one is why i can use similarly complex generated pROM directly but not ROM16. If someone creates that abstraction, can/should it be implemented. Here is the pROM implementation its similarly complex: | 12:20 |
orhosko | ``` | 12:20 |
orhosko | pROM prom_inst_0 ( | 12:20 |
orhosko | .DO({prom_inst_0_dout_w[23:0],dout[7:0]}), | 12:20 |
orhosko | .CLK(clk), | 12:20 |
orhosko | .OCE(oce), | 12:20 |
orhosko | .CE(ce), | 12:20 |
orhosko | .RESET(reset), | 12:20 |
orhosko | .AD({gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,gw_gnd,ad[3:0],gw_gnd,gw_gnd,gw_gnd}) | 12:20 |
orhosko | ); | 12:20 |
*** lofty[m] <lofty[m]!loftyfield@2a01:4f8:c012:5b7:0:1:0:570> has joined #yosys | 12:37 | |
lofty[m] | from some quick browsing through the nextpnr source and the gowin primitive guide: pROM maps to BSRAM (block RAM), but ROM16 maps to SSRAM (LUT RAM). | 12:37 |
*** orhosko97 <[email protected]> has joined #yosys | 12:45 | |
*** orhosko <[email protected]> has quit IRC (Ping timeout: 240 seconds) | 12:48 | |
*** orhosko97 <[email protected]> has quit IRC (Client Quit) | 12:48 | |
*** orhosko <[email protected]> has joined #yosys | 12:48 | |
orhosko | I also looked for nextpnr source code and couldn't find anything about ROM16. Thats why I thought it's not implemented. Did you find anything in source code or is it from the primitive guide? | 12:50 |
lofty[m] | from the primitive guide: https://cdn.gowinsemi.com.cn/UG285E.pdf | 12:54 |
orhosko | Thanks a lot to both of you. I will try to implement myself now. I still not sure whether ROM16 should be part of the nextpnr since IDE provides it directly. Maybe I will open a issue/pr later. thx again | 13:10 |
*** krispaul <[email protected]> has joined #yosys | 13:16 | |
*** krispaul <[email protected]> has quit IRC (Read error: Connection reset by peer) | 13:28 | |
*** kristianpaul <kristianpaul!~paul@user/kristianpaul> has joined #yosys | 13:29 | |
*** orhosko <[email protected]> has quit IRC (Quit: Client closed) | 14:49 | |
gatecat | the easiest option to implement it would probably just be a yosys techmap rule that converts it to a LUT, given that's all that's happening in any case | 14:56 |
gatecat | it's the kind of thing techmap rules are very nice for | 14:57 |
*** ec <ec!~ec@gateway/tor-sasl/ec> has quit IRC (Ping timeout: 264 seconds) | 15:35 | |
*** ec <ec!~ec@gateway/tor-sasl/ec> has joined #yosys | 15:37 | |
*** FabM <FabM!~FabM@armadeus/team/FabM> has quit IRC (Ping timeout: 246 seconds) | 17:05 | |
*** so-offishul <so-offishul!~so-offish@2610:148:610:2b10::75> has joined #yosys | 17:08 | |
*** so-offish <[email protected]> has quit IRC (Ping timeout: 260 seconds) | 17:12 | |
*** so-offishul <so-offishul!~so-offish@2610:148:610:2b10::75> has quit IRC (Quit: Leaving) | 18:30 | |
*** mithro <[email protected]> has quit IRC (Ping timeout: 260 seconds) | 19:00 | |
*** sorear <[email protected]> has quit IRC (Ping timeout: 260 seconds) | 19:00 | |
*** MoeIcenowy <MoeIcenowy!~MoeIcenow@2001:19f0:7002:790:5400:4ff:fea8:9a29> has quit IRC (Ping timeout: 260 seconds) | 19:01 | |
*** jleightcap <jleightcap!7bc4014b62@user/jleightcap> has quit IRC (Ping timeout: 260 seconds) | 19:01 | |
*** dnm <[email protected]> has quit IRC (Ping timeout: 260 seconds) | 19:01 | |
*** Guest408 <Guest408!~root@user/Miyu-saki> has quit IRC (Ping timeout: 260 seconds) | 19:01 | |
*** MoeIcenowy <[email protected]> has joined #yosys | 19:01 | |
*** root1 <root1!~root@user/Miyu-saki> has joined #yosys | 19:02 | |
*** jleightcap <jleightcap!7bc4014b62@user/jleightcap> has joined #yosys | 19:03 | |
*** dnm <[email protected]> has joined #yosys | 19:03 | |
*** sorear <[email protected]> has joined #yosys | 19:03 | |
*** mithro <[email protected]> has joined #yosys | 19:04 | |
*** peepsalot <peepsalot!~peepsalot@openscad/peepsalot> has quit IRC (Remote host closed the connection) | 19:48 | |
*** peepsalot <peepsalot!~peepsalot@openscad/peepsalot> has joined #yosys | 19:51 | |
*** bjorkintosh <bjorkintosh!~bjork@user/bjorkintosh> has quit IRC (Ping timeout: 276 seconds) | 21:28 | |
*** orhosko <[email protected]> has joined #yosys | 22:21 | |
*** berkay_ <[email protected]> has joined #yosys | 22:24 | |
*** orhosko <[email protected]> has quit IRC (Client Quit) | 22:24 | |
*** berkay_ is now known as orhosko | 22:24 | |
*** orhosko <[email protected]> has quit IRC (Quit: orhosko) | 22:29 | |
*** berkay_ <[email protected]> has joined #yosys | 22:29 | |
*** nonchip <[email protected]> has quit IRC (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) | 23:03 | |
*** nonchip <[email protected]> has joined #yosys | 23:03 |
Generated by irclog2html.py 2.17.2 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!