Author Topic: YoSys: status?  (Read 5056 times)

0 Members and 1 Guest are viewing this topic.

Online Nominal Animal

  • Super Contributor
  • ***
  • Posts: 6983
  • Country: fi
    • My home page and email address
Re: YoSys: status?
« Reply #25 on: September 02, 2024, 09:55:59 am »
Olimex has two variants of OSHW GateMate development board for about 50€ (+VAT and shipping).  It uses yosys for synthesis; see the toolchain installation guide.
 
The following users thanked this post: cfbsoftware, DiTBho

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 28111
  • Country: nl
    • NCT Developments
Re: YoSys: status?
« Reply #26 on: September 02, 2024, 09:56:39 am »
How about Gatemate?

never heard about  :o :o :o
Those are designed by Cologne Chip, they have been around for decades. A small company and Yosys has enabled them to get into the FPGA market without needing to spend lots of money on tool development.
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 
The following users thanked this post: cfbsoftware, DiTBho

Offline laugensalm

  • Regular Contributor
  • *
  • Posts: 130
  • Country: ch
Re: YoSys: status?
« Reply #27 on: September 02, 2024, 09:59:29 am »
Hi,

I'm using yosys on a daily basis, actually. There are architectures that work well, some less optimal, and the memory handling with respect to efficient dual port ram was, to address it neutrally, suboptimal, so I've had to mostly hack my own memory inference rules. However, since TDP is working somewhat ok in upstream, you can actually get a full SoC running on Lattice ECP5 using the ghdl synthesis plugin. You might find relicts here: https://github.com/hackfin/hdlplayground, but it's no longer maintained.

There's just  a few important things to keep in mind: ghdlsynth won't just eat any VHDL like for instance the Synopsys tools, so you don't normally get to easily port an existing project, or you might end up with rewriting some modules in Verilog.
Then: No timing optimization will be done for you on the mapping stage. You'll have to know details about your architecture and write your code accordingly, but this is not an entirely new phenomenon, if you have been porting clock optimized designs among various architectures. Dealing with f_max / 2 is a safe assumption.
On the other hand, you have a good guarantee that you can port a GHDL-understood design easily to the $-Tools.

Unfortunately, you don't get fine grained control over the synthesis via the V* languages, there's a way out via direct synthesis (cyrite HDL to pyosys target), but that's again not trivial.

And last but not least, you might be left with an urge to do verification at the early mapping stage, but this turned out to be not such a bad idea anyhow, due to yosys' volatile behaviour once in a while.

The other issues is with architectures that are reverse engineered. Some results simply can not be published unless one wants to trigger anal behaviour of lawyers claiming violated trade secrets. So some architectures will just be left orphaned in one or the other way...
The closest to productive fun is probably Lattice ECP5, unless you're going to do heavy video I/O like HDMI, there you'll need the Diamond $-ware. Gatemate was also promising, but I've only verified it 'dry dock'.


 
The following users thanked this post: glenenglish, DiTBho

Online pcprogrammer

  • Super Contributor
  • ***
  • Posts: 4420
  • Country: nl
Re: YoSys: status?
« Reply #28 on: September 02, 2024, 10:12:06 am »
Olimex has two variants of OSHW GateMate development board for about 50€ (+VAT and shipping).  It uses yosys for synthesis; see the toolchain installation guide.

The way I interpret the chart on page 5 is that the place and route is done with GateMate proprietary software, so porting to another platform won't be possible.

Offline DiTBhoTopic starter

  • Super Contributor
  • ***
  • Posts: 4247
  • Country: gb
Re: YoSys: status?
« Reply #29 on: September 02, 2024, 10:57:47 am »
There's just  a few important things to keep in mind: ghdlsynth won't just eat any VHDL like for instance the Synopsys tools, so you don't normally get to easily port an existing project

This is the reason for my previous comment about using an existing project (I mentioned GameDuino-v1) to "test" the tool.
Because it is also valid with Xilinx/ISE

i.e., not necessary but sufficient condition if GHDL does not emit errors or warnings, then it is also synthesized on ISE
Unfortunately, the opposite is not true either, and this is clearly visible when taking projects from OpenCore(1)
ISE completes the synthesis, while GHDL crashes with errors, or in any case emits rather worrying warnings.

I compared GHDL compiled on HPPA (experimental), with GHDL compiled on x86 (mainstream).
Same results. At first I thought it was a bug with GNU/Linux HPPA,
which is often the real reason why things don't work as they should.

(1) OpenCores does not have typical well-written projects
The opposite of courage is not cowardice, it is conformity. Even a dead fish can go with the flow
 

Offline DiTBhoTopic starter

  • Super Contributor
  • ***
  • Posts: 4247
  • Country: gb
Re: YoSys: status?
« Reply #30 on: September 02, 2024, 11:16:04 am »
the memory handling with respect to efficient dual port ram was, to address it neutrally, suboptimal, so I've had to mostly hack my own memory inference rules

this is a big problem to support two of the hobby projects I would like to complete
  • VDU, all-in-one
  • TrMem, all-in-one

Both are "all-in-one" profiled without any external dual port ram chip.
So, the bram is the only RAM resource I have available
and it must be dual-port, two read, one write, for at least 4Kbyte

ISE has some problems when instantiating bram with 8bit databus for Spartan3

e.g. your CPU is 32bit, so you are tempted to describe the resource as 4x8bit
with four byte_enable control bits in the load/store stage.

supporting
load{8,16,32}bit <-- { byte3_en,byte2_en,byte1_en,byte0_en }(size)={ (0,0,0,1), (0,0,1,1), (1,1,1,1) }
store{8,16,32}bit <-- { byte3_en,byte2_en,byte1_en,byte0_en }(size)={ (0,0,0,1), (0,0,1,1), (1,1,1,1) }

Good idea, from the design point of view, but it's not efficient on synthesis  :-//

I found it works much better when instantiating bram with 16 databus.
This is because physically the SP3 bram resource is made exactly like this: with 16bit databus!

* * *

In order to make portable projects

I think, at worst I can describe the "dualport-ram" as a generic entity
and then write a specific VHDL module for each physical FPGA
so, with some tricks for Spartan3, etc...
The opposite of courage is not cowardice, it is conformity. Even a dead fish can go with the flow
 

Offline laugensalm

  • Regular Contributor
  • *
  • Posts: 130
  • Country: ch
Re: YoSys: status?
« Reply #31 on: September 02, 2024, 12:12:35 pm »
I believe I did get some useful result out of more recent yosys releases with the mem_v2 API on the Gatemate primitives from Verilog models, so basically, there are constellations of TDP with the properties you describe that synthesize via yosys above v0.13, if I'm right. I haven't got the entire test suite up to par with the latest releases, but some default ISE-digesteable VHDL RAM descriptions should work as well.
The 8 bit issues with Spartan3 and 6 are rather due to the 'broken' architecture than the tools, I'd say.

 
The following users thanked this post: DiTBho

Offline zapta

  • Super Contributor
  • ***
  • Posts: 6289
  • Country: 00
Re: YoSys: status?
« Reply #32 on: September 04, 2024, 01:03:38 am »
Working on my first FPGA project and am having very good experience with Apio. It's a platformio like command line wrapper around the open source tool chain, including yosys, which provides comprehensive and intuitive commands and easy installation.

Here is the top level usage info

Code: [Select]
$ apio
Usage: apio [OPTIONS] COMMAND [ARGS]...

  Work with FPGAs with ease. For more information see
  https://github.com/FPGAwars/apio/wiki/Apio

Options:
  --version   Show the version and exit.
  -h, --help  Show this message and exit.

Project commands:
  build      Synthesize the bitstream.
  clean      Clean the previous generated files.
  graph      Generate a a visual graph of the verilog code.
  lint       Lint the verilog code.
  sim        Simulate a single module.
  test       Test all or a single verilog testbench module.
  time       Analyze and design and report timing.
  upload     Upload the bitstream to the FPGA.
  verify     Verify project's verilog code.

Setup commands:
  drivers    Manage FPGA boards drivers.
  init       Manage apio projects.
  install    Install apio packages.
  uninstall  Uninstall packages.

Utility commands:
  boards     Manage FPGA boards.
  config     Apio configuration.
  examples   Manage verilog examples.
  raw        Execute commands directly from the Apio packages
  system     System tools.
  upgrade    Check the latest Apio version.

« Last Edit: September 04, 2024, 01:05:35 am by zapta »
 

Offline SiliconWizard

  • Super Contributor
  • ***
  • Posts: 15444
  • Country: fr
Re: YoSys: status?
« Reply #33 on: September 04, 2024, 03:11:55 am »
I had done some tests with it (using VHDL and the corresponding GHDL plugin) a while back, targetting a Lattice ECP5.

Which target board?

Not that the board really matters here, but possibly you're looking for dev boards too.

I used this kind of boards back then: https://www.aliexpress.com/item/1005006834979763.html
(I have one with a -25 and a couple with a -45).

The boards have 8 MB SDRAM, which isn't a lot and not ultra fast, but is relatively easy to control (compared to DDR RAM).
 

Offline DiTBhoTopic starter

  • Super Contributor
  • ***
  • Posts: 4247
  • Country: gb
Re: YoSys: status?
« Reply #34 on: September 04, 2024, 04:11:38 am »
Not that the board really matters here, but possibly you're looking for dev boards too.

It's the most important question instead.
I need a reliable eval board.
With experimental tools like YoSys&C, it's not good idea playing with random hw.
The opposite of courage is not cowardice, it is conformity. Even a dead fish can go with the flow
 

Offline laugensalm

  • Regular Contributor
  • *
  • Posts: 130
  • Country: ch
Re: YoSys: status?
« Reply #35 on: September 04, 2024, 07:56:29 am »
WRT boards, I've got these spinning without hassle:

* LF-EVDK1-EVN
* LFE5UM5G-45F-VERSA-EVNG

Price tag is somewhat higher, esp. since you need to get another board for the EVDK to have Ethernet. But what you get is a pretty cool stereo cam...
Then there appeared to be a community board called ULX3S, which may get you started faster with open source stuff, but wasn't for me, due to the lack of 1G networking.
 
The following users thanked this post: DiTBho

Offline zapta

  • Super Contributor
  • ***
  • Posts: 6289
  • Country: 00
Re: YoSys: status?
« Reply #36 on: September 07, 2024, 04:23:10 am »
It's the most important question instead.
I need a reliable eval board.
With experimental tools like YoSys&C, it's not good idea playing with random hw.

These are the boards that are supported by apio out of the box.  I am using upduino31, its an inexpensive small DIP module that fits in a solderless board.

Code: [Select]
$ apio boards -l
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Board (FPGA, Arch, Type, Size, Pack)
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
• Alchitry-Cu  (FPGA:iCE40-HX8K-CB132, ice40, hx, 8k, cb132)
• Butterstick-r10-2g-85k  (FPGA:ECP5-LFE5UM5G-85F-CABGA381, ecp5, um5g-85k, 85k, CABGA381)
• Butterstick-r10-2g-85k_(FT2232H)  (FPGA:ECP5-LFE5UM5G-85F-CABGA381, ecp5, um5g-85k, 85k, CABGA381)
• Butterstick-r10-2g-85k_(FT232H)  (FPGA:ECP5-LFE5UM5G-85F-CABGA381, ecp5, um5g-85k, 85k, CABGA381)
• Cat-board  (FPGA:iCE40-HX8K-CT256, ice40, hx, 8k, ct256)
• ColorLight-5A-75B-V61  (FPGA:ECP5-LFE5U-25F-CABGA381, ecp5, 25k, 25k, CABGA381)
• ColorLight-5A-75B-V7  (FPGA:ECP5-LFE5U-25F-CABGA256, ecp5, 25k, 25k, CABGA256)
• ColorLight-5A-75B-V8  (FPGA:ECP5-LFE5U-25F-CABGA256, ecp5, 25k, 25k, CABGA256)
• ColorLight-5A-75E-V6  (FPGA:ECP5-LFE5U-25F-CABGA256, ecp5, 25k, 25k, CABGA256)
• ColorLight-5A-75E-V71_(FT2232H)  (FPGA:ECP5-LFE5U-25F-CABGA256, ecp5, 25k, 25k, CABGA256)
• ColorLight-5A-75E-V71_(FT232H)  (FPGA:ECP5-LFE5U-25F-CABGA256, ecp5, 25k, 25k, CABGA256)
• ColorLight-5A-75E-V71_(USB-Blaster)  (FPGA:ECP5-LFE5U-25F-CABGA256, ecp5, 25k, 25k, CABGA256)
• ColorLight-i5-v7.0_(FT2232H)  (FPGA:ECP5-LFE5U-25F-CABGA381, ecp5, 25k, 25k, CABGA381)
• ColorLight-i5-v7.0_(FT232H)  (FPGA:ECP5-LFE5U-25F-CABGA381, ecp5, 25k, 25k, CABGA381)
• ColorLight-i5-v7.0_(USB-Blaster)  (FPGA:ECP5-LFE5U-25F-CABGA381, ecp5, 25k, 25k, CABGA381)
• ColorLight-i9-v7.2_(FT2232H)  (FPGA:ECP5-LFE5U-45F-CABGA381, ecp5, 45k, 45k, CABGA381)
• ColorLight-i9-v7.2_(FT232H)  (FPGA:ECP5-LFE5U-45F-CABGA381, ecp5, 45k, 45k, CABGA381)
• ColorLight-i9-v7.2_(USB-Blaster)  (FPGA:ECP5-LFE5U-45F-CABGA381, ecp5, 45k, 45k, CABGA381)
• ECP5-Evaluation-Board  (FPGA:ECP5-LFE5UM5G-85F-CABGA381, ecp5, um5g-85k, 85k, CABGA381)
• ECP5-Mini-12  (FPGA:ECP5-LFE5U-12F-CABGA256, ecp5, 12k, 12k, CABGA256)
• ECP5-Mini-25  (FPGA:ECP5-LFE5U-25F-CABGA256, ecp5, 25k, 25k, CABGA256)
• FleaFPGA-Ohm_(FT2232H)  (FPGA:ECP5-LFE5U-25F-CABGA381, ecp5, 25k, 25k, CABGA381)
• FleaFPGA-Ohm_(FT232H)  (FPGA:ECP5-LFE5U-25F-CABGA381, ecp5, 25k, 25k, CABGA381)
• FleaFPGA-Ohm_(USB-Blaster)  (FPGA:ECP5-LFE5U-25F-CABGA381, ecp5, 25k, 25k, CABGA381)
• ODT_IcyBlue_Feather  (FPGA:iCE40-U4K-SG48, ice40, u, 4k, sg48)
• ODT_RPGA_Feather  (FPGA:iCE40-U4K-SG48, ice40, u, 4k, sg48)
• OK-iCE40Pro  (FPGA:iCE40-UP5K-SG48, ice40, up, 5k, sg48)
• Sipeed-Tang-Nano-20k  (FPGA:GW2AR-LV18QN88C8/I7, gowin, gw2a-18c, 20k, QN88)
• ThetaMachines-ETH4K  (FPGA:iCE40-HX4K-TQ144, ice40, hx, 8k, tq144:4k)
• TinyFPGA-B2  (FPGA:iCE40-LP8K-CM81, ice40, lp, 8k, cm81)
• TinyFPGA-BX  (FPGA:iCE40-LP8K-CM81, ice40, lp, 8k, cm81)
• TinyFPGA-EX-rev1  (FPGA:ECP5-LFE5U-85F-CSFBGA285, ecp5, 85k, 85k, CSFBGA285)
• TinyFPGA-EX-rev2  (FPGA:ECP5-LFE5UM5G-85F-CSFBGA285, ecp5, um5g-85k, 85k, CSFBGA285)
• alhambra-ii  (FPGA:iCE40-HX4K-TQ144, ice40, hx, 8k, tq144:4k)
• arice1  (FPGA:iCE40-UP5K-SG48, ice40, up, 5k, sg48)
• blackice  (FPGA:iCE40-HX4K-TQ144, ice40, hx, 8k, tq144:4k)
• blackice-ii  (FPGA:iCE40-HX4K-TQ144, ice40, hx, 8k, tq144:4k)
• blackice-mx  (FPGA:iCE40-HX4K-TQ144, ice40, hx, 8k, tq144:4k)
• edu-ciaa-fpga  (FPGA:iCE40-HX4K-TQ144, ice40, hx, 8k, tq144:4k)
• fomu  (FPGA:iCE40-UP5K-UWG30, ice40, up, 5k, uwg30)
• fpga101  (FPGA:iCE40-UP5K-SG48, ice40, up, 5k, sg48)
• go-board  (FPGA:iCE40-HX1K-VQ100, ice40, hx, 1k, vq100)
• iCE40-HX1K-EVB  (FPGA:iCE40-HX1K-VQ100, ice40, hx, 1k, vq100)
• iCE40-HX8K  (FPGA:iCE40-HX8K-CT256, ice40, hx, 8k, ct256)
• iCE40-HX8K-EVB  (FPGA:iCE40-HX8K-CT256, ice40, hx, 8k, ct256)
• iCE40-UL1K-Breakout  (FPGA:iCE40-UL1K-CM36A, ice40, ul, 1k, cm36a)
• iCE40-UP5K  (FPGA:iCE40-UP5K-SG48, ice40, up, 5k, sg48)
• iCEBreaker  (FPGA:iCE40-UP5K-SG48, ice40, up, 5k, sg48)
• iCEBreaker-bitsy0  (FPGA:iCE40-UP5K-SG48, ice40, up, 5k, sg48)
• iCEBreaker-bitsy1  (FPGA:iCE40-UP5K-SG48, ice40, up, 5k, sg48)
• iCESugar-Pro_(FT2232H)  (FPGA:ECP5-LFE5U-25F-CABGA256, ecp5, 25k, 25k, CABGA256)
• iCESugar-Pro_(FT232H)  (FPGA:ECP5-LFE5U-25F-CABGA256, ecp5, 25k, 25k, CABGA256)
• iCESugar-Pro_(USB-Blaster)  (FPGA:ECP5-LFE5U-25F-CABGA256, ecp5, 25k, 25k, CABGA256)
• iCESugar-nano  (FPGA:iCE40-LP1K-CM36, ice40, lp, 1k, cm36)
• iCESugar_1_5  (FPGA:iCE40-UP5K-SG48, ice40, up, 5k, sg48)
• iceWerx  (FPGA:iCE40-HX8K-CB132, ice40, hx, 8k, cb132)
• iceblink40-hx1k  (FPGA:iCE40-HX1K-VQ100, ice40, hx, 1k, vq100)
• icefun  (FPGA:iCE40-HX8K-CB132, ice40, hx, 8k, cb132)
• icestick  (FPGA:iCE40-HX1K-TQ144, ice40, hx, 1k, tq144)
• icezum  (FPGA:iCE40-HX1K-TQ144, ice40, hx, 1k, tq144)
• icoboard  (FPGA:iCE40-HX8K-CT256, ice40, hx, 8k, ct256)
• kefir  (FPGA:iCE40-HX4K-TQ144, ice40, hx, 8k, tq144:4k)
• orangecrab-r02-25f  (FPGA:ECP5-LFE5U-25F-CSFBGA285, ecp5, 25k, 25k, CSFBGA285)
• orangecrab-r02-85f  (FPGA:ECP5-LFE5U-85F-CSFBGA285, ecp5, 85k, 85k, CSFBGA285)
• pico-ice  (FPGA:iCE40-UP5K-SG48, ice40, up, 5k, sg48)
• ulx3s-12f  (FPGA:ECP5-LFE5U-12F-CABGA381, ecp5, 12k, 12k, CABGA381)
• ulx3s-25f  (FPGA:ECP5-LFE5U-25F-CABGA381, ecp5, 25k, 25k, CABGA381)
• ulx3s-45f  (FPGA:ECP5-LFE5U-45F-CABGA381, ecp5, 45k, 45k, CABGA381)
• ulx3s-85f  (FPGA:ECP5-LFE5U-85F-CABGA381, ecp5, 85k, 85k, CABGA381)
• upduino  (FPGA:iCE40-UP5K-SG48, ice40, up, 5k, sg48)
• upduino2  (FPGA:iCE40-UP5K-SG48, ice40, up, 5k, sg48)
• upduino21  (FPGA:iCE40-UP5K-SG48, ice40, up, 5k, sg48)
• upduino3  (FPGA:iCE40-UP5K-SG48, ice40, up, 5k, sg48)
• upduino31  (FPGA:iCE40-UP5K-SG48, ice40, up, 5k, sg48)
• versa  (FPGA:ECP5-LFE5UM-45F-CABGA381, ecp5, um-45k, 45k, CABGA381)
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Total: 75 boards


And these are the supported FPGAs, in case you want to use a custom board. I designed a custom board that is based on the upduino31 that is optimized for fast data USB data link (FT2232, 8 bit FIFO mode) and am using a custom board definition.

Code: [Select]
apio boards --fpga
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
FPGA                            Arch     Type         Size  Pack     
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
• ECP5-LFE5U-12F-CABGA256         ecp5     12k          12k   CABGA256 
• ECP5-LFE5U-12F-CABGA381         ecp5     12k          12k   CABGA381 
• ECP5-LFE5U-12F-CSFBGA285        ecp5     12k          12k   CSFBGA285
• ECP5-LFE5U-25F-CABGA256         ecp5     25k          25k   CABGA256 
• ECP5-LFE5U-25F-CABGA381         ecp5     25k          25k   CABGA381 
• ECP5-LFE5U-25F-CSFBGA285        ecp5     25k          25k   CSFBGA285
• ECP5-LFE5U-45F-CABGA256         ecp5     45k          45k   CABGA256 
• ECP5-LFE5U-45F-CABGA381         ecp5     45k          45k   CABGA381 
• ECP5-LFE5U-45F-CABGA554         ecp5     45k          45k   CABGA554 
• ECP5-LFE5U-45F-CSFBGA285        ecp5     45k          45k   CSFBGA285
• ECP5-LFE5U-85F-CABGA381         ecp5     85k          85k   CABGA381 
• ECP5-LFE5U-85F-CABGA554         ecp5     85k          85k   CABGA554 
• ECP5-LFE5U-85F-CABGA756         ecp5     85k          85k   CABGA756 
• ECP5-LFE5U-85F-CSFBGA285        ecp5     85k          85k   CSFBGA285
• ECP5-LFE5UM-25F-CABGA256        ecp5     um-25k       25k   CABGA256 
• ECP5-LFE5UM-25F-CABGA381        ecp5     um-25k       25k   CABGA381 
• ECP5-LFE5UM-25F-CSFBGA285       ecp5     um-25k       25k   CSFBGA285
• ECP5-LFE5UM-45F-CABGA256        ecp5     um-45k       45k   CABGA256 
• ECP5-LFE5UM-45F-CABGA381        ecp5     um-45k       45k   CABGA381 
• ECP5-LFE5UM-45F-CABGA554        ecp5     um-45k       45k   CABGA554 
• ECP5-LFE5UM-45F-CSFBGA285       ecp5     um-45k       45k   CSFBGA285
• ECP5-LFE5UM-85F-CABGA381        ecp5     um-85k       85k   CABGA381 
• ECP5-LFE5UM-85F-CABGA554        ecp5     um-85k       85k   CABGA554 
• ECP5-LFE5UM-85F-CABGA756        ecp5     um-85k       85k   CABGA756 
• ECP5-LFE5UM-85F-CSFBGA285       ecp5     um-85k       85k   CSFBGA285
• ECP5-LFE5UM5G-25F-CABGA256      ecp5     um5g-25k     25k   CABGA256 
• ECP5-LFE5UM5G-25F-CABGA381      ecp5     um5g-25k     25k   CABGA381 
• ECP5-LFE5UM5G-25F-CSFBGA285     ecp5     um5g-25k     25k   CSFBGA285
• ECP5-LFE5UM5G-45F-CABGA256      ecp5     um5g-45k     45k   CABGA256 
• ECP5-LFE5UM5G-45F-CABGA381      ecp5     um5g-45k     45k   CABGA381 
• ECP5-LFE5UM5G-45F-CABGA554      ecp5     um5g-45k     45k   CABGA554 
• ECP5-LFE5UM5G-45F-CSFBGA285     ecp5     um5g-45k     45k   CSFBGA285
• ECP5-LFE5UM5G-85F-CABGA381      ecp5     um5g-85k     85k   CABGA381 
• ECP5-LFE5UM5G-85F-CABGA554      ecp5     um5g-85k     85k   CABGA554 
• ECP5-LFE5UM5G-85F-CABGA756      ecp5     um5g-85k     85k   CABGA756 
• ECP5-LFE5UM5G-85F-CSFBGA285     ecp5     um5g-85k     85k   CSFBGA285
• GW2AR-LV18QN88C8/I7             gowin    gw2a-18c     20k   QN88     
• iCE40-HX1K-CB132                ice40    hx           1k    cb132     
• iCE40-HX1K-TQ144                ice40    hx           1k    tq144     
• iCE40-HX1K-VQ100                ice40    hx           1k    vq100     
• iCE40-HX4K-BG121                ice40    hx           8k    bg121:4k 
• iCE40-HX4K-CB132                ice40    hx           8k    cb132:4k 
• iCE40-HX4K-TQ144                ice40    hx           8k    tq144:4k 
• iCE40-HX8K-BG121                ice40    hx           8k    bg121     
• iCE40-HX8K-CB132                ice40    hx           8k    cb132     
• iCE40-HX8K-CM225                ice40    hx           8k    cm225     
• iCE40-HX8K-CT256                ice40    hx           8k    ct256     
• iCE40-LP1K-CB121                ice40    lp           1k    cb121     
• iCE40-LP1K-CB81                 ice40    lp           1k    cb81     
• iCE40-LP1K-CM121                ice40    lp           1k    cm121     
• iCE40-LP1K-CM36                 ice40    lp           1k    cm36     
• iCE40-LP1K-CM49                 ice40    lp           1k    cm49     
• iCE40-LP1K-CM81                 ice40    lp           1k    cm81     
• iCE40-LP1K-QN84                 ice40    lp           1k    qn84     
• iCE40-LP1K-SWG16TR              ice40    lp           1k    swg16tr   
• iCE40-LP384-CM36                ice40    lp           384   cm36     
• iCE40-LP384-CM49                ice40    lp           384   cm49     
• iCE40-LP384-QN32                ice40    lp           384   qn32     
• iCE40-LP4K-CM121                ice40    lp           8k    cm121:4k 
• iCE40-LP4K-CM225                ice40    lp           8k    cm225:4k 
• iCE40-LP4K-CM81                 ice40    lp           8k    cm81:4k   
• iCE40-LP8K-CM121                ice40    lp           8k    cm121     
• iCE40-LP8K-CM225                ice40    lp           8k    cm225     
• iCE40-LP8K-CM81                 ice40    lp           8k    cm81     
• iCE40-U4K-SG48                  ice40    u            4k    sg48     
• iCE40-U4K-UWG30                 ice40    u            4k    uwg30     
• iCE40-UL1K-CM36A                ice40    ul           1k    cm36a     
• iCE40-UP5K-SG48                 ice40    up           5k    sg48     
• iCE40-UP5K-UWG30                ice40    up           5k    uwg30     
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Total: 69 fpgas
« Last Edit: September 07, 2024, 04:27:06 am by zapta »
 
The following users thanked this post: DiTBho

Offline DiTBhoTopic starter

  • Super Contributor
  • ***
  • Posts: 4247
  • Country: gb
Re: YoSys: status?
« Reply #37 on: September 09, 2024, 06:21:47 am »
The pipeline employs the following tools:
  • YoSys - logic synthesis of { Verilog code, VHDL(via GHDL-plug-in), ... }
    -> the output is a netlist describing how all cells are connected together in BLIF format
  • Arachne-pnr - placement and routing of the netlist.
    -> the output is a textual bitstream
  • fpga-IceStorm - preparing the bitstream for the Lattice'FPGA
    -> the output is a binary bitstream

A few lines in its repo say that "Arachne-pnr" is not maintained anymore, and suggest to use "nextpnr" instead, which should be a complete functional replacement, 5x faster and with major improvements

Should I follow this advice?  :-//

« Last Edit: September 09, 2024, 06:31:13 am by DiTBho »
The opposite of courage is not cowardice, it is conformity. Even a dead fish can go with the flow
 

Offline DiTBhoTopic starter

  • Super Contributor
  • ***
  • Posts: 4247
  • Country: gb
Re: YoSys: status?
« Reply #38 on: September 09, 2024, 06:29:35 am »
Meanwhile, only to develop my Gentoo Overlay and test YoSys&C on HPPA GNU/Linux, I bought this board.
  • upduino-v3.1, Lattice ICE40, ~30 euro
I will not make any other use of it, except to test the tools directly on the workstation.
The opposite of courage is not cowardice, it is conformity. Even a dead fish can go with the flow
 

Offline zapta

  • Super Contributor
  • ***
  • Posts: 6289
  • Country: 00
Re: YoSys: status?
« Reply #39 on: September 09, 2024, 06:50:39 am »
A few lines in its repo say that "Arachne-pnr" is not maintained anymore, and suggest to use "nextpnr" instead, which should be a complete functional replacement, 5x faster and with major improvements

Should I follow this advice?  :-//

This is what happens when I run 'apio build'.  Never seen or used Arachne-pnr.

```
yosys -p "synth_ice40 -top main -json hardware.json" -q ftdi_tx.v i2s_rx.v i2s_test_pattern.v i2s_timing.v lcd_i2c.v lcd_i2c_io.v leds.v main.v queue.v queue_pusher.v register.v reset_gen.v
nextpnr-ice40 --up5k --package sg48 --json hardware.json --asc hardware.asc --pcf main.pcf -q
icepack hardware.asc hardware.bin
```
 

Offline djsb

  • Frequent Contributor
  • **
  • Posts: 964
  • Country: gb
Re: YoSys: status?
« Reply #40 on: September 09, 2024, 09:56:12 am »
Zapta,
Would the PICO-ICE from the same company as the upduino 3.1 work just as well?

https://tinyvision.ai/products/pico-ice?pr_prod_strat=jac&pr_rec_id=3d4c2476b&pr_rec_pid=6766758821991&pr_ref_pid=4634414547047&pr_seq=uniform

I have IceStudio 0.12 installed. UPDuino 3.1 and PICO-ICE are listed as being supported. Thanks.



David
Hertfordshire, UK
University Electronics Technician, London, PIC16/18, CCS PCM C, Arduino UNO, NANO,ESP32, KiCad V8+, Altium Designer 21.4.1, Alibre Design Expert 28 & FreeCAD beginner. LPKF S103,S62 PCB router Operator, Electronics instructor. Credited KiCad French to English translator
 

Offline zapta

  • Super Contributor
  • ***
  • Posts: 6289
  • Country: 00
Re: YoSys: status?
« Reply #41 on: September 09, 2024, 01:11:47 pm »
Zapta,
Would the PICO-ICE from the same company as the upduino 3.1 work just as well?

https://tinyvision.ai/products/pico-ice?pr_prod_strat=jac&pr_rec_id=3d4c2476b&pr_rec_pid=6766758821991&pr_ref_pid=4634414547047&pr_seq=uniform

I have IceStudio 0.12 installed. UPDuino 3.1 and PICO-ICE are listed as being supported. Thanks.

@djsb, I see it in the apio list so should work but never tried it.

```
$ apio boards -l | grep -i pico
• pico-ice  (FPGA:iCE40-UP5K-SG48, ice40, up, 5k, sg48)
```

Personally I prefer the upduino because it's simpler an I can plug it into a solderless breadboard.

BTW, icestudio and apio are from the same open source group FPGAwars, and icestudio (graphical, schematic oriented) uses apio internally (command line, text oriented).  For curiosity, try typing the system command apio to see if it's on your path.
 

Offline SiliconWizard

  • Super Contributor
  • ***
  • Posts: 15444
  • Country: fr
Re: YoSys: status?
« Reply #42 on: September 09, 2024, 09:36:30 pm »
I have an Upduino 2.0 board and two Upduino 3.1. I have only used Lattice Radiant with them though and not Yosys/nextpnr, which I've only tested on the ECP5.

But for "flashing" the Upduino boards, I use iceprog, which is part of icestorm: https://github.com/YosysHQ/icestorm/tree/master/iceprog
 

Offline zapta

  • Super Contributor
  • ***
  • Posts: 6289
  • Country: 00
Re: YoSys: status?
« Reply #43 on: September 09, 2024, 10:54:36 pm »
Apio and icestudio also use the included iceprog to progoram the upduinos which are FTDI based.

https://github.com/FPGAwars/apio/blob/cb991fe1ff69bc9ba651c0aff1d806c278bef3b5/apio/resources/boards.json#L224

The ice pico however uses an RP2040 instead of a FTDI chip and is programed using a DFU utility.

https://github.com/FPGAwars/apio/blob/cb991fe1ff69bc9ba651c0aff1d806c278bef3b5/apio/resources/boards.json#L602
« Last Edit: September 09, 2024, 10:57:40 pm by zapta »
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf