Code Monkey home page Code Monkey logo

verifying-foss-hdl-synthesizers's Introduction

Verifying FOSS HDL-synthesizers

Yosys Verification GHDL Verification ghdl-yosys-plugin Verification

The aim of this project is to provide feedback about things supported by the vendor EDA tools, which presents issues for Yosys, GHDL or ghdl-yosys-plugin. This is performed, running the tools against several examples from different sources:

Firstly, the examples are checked with commercial tools such as ISE, Vivado and Quartus, to check if they are synthesizable. Secondly, they are analyzed with tools like iVerilog and GHDL to detect non-standard constructions. Then, the tools under test are employed. If an issue is detected, it is reported and the file is ignored until fixed. To simplify tools and options handling, fpga-hdl2bit from the PyFPGA project is used (when supported).

A Dockerfile, based on ghdl/synth:beta from the ghdl/docker project (which supports the three tools under test), is provided. It is employed for the CI of the repository and can be used to run in any GNU/Linux with Docker installed on:

  • make build creates the needed Docker image.
  • bash helpers/docker_run.sh make clean-all to clean the generated files of a previous run.
  • make prepare downloads the examples (they are not part of the repository).
  • bash helpers/docker_run.sh make verify-yosys to verify yosys.
  • bash helpers/docker_run.sh make verify-ghdl to verify ghdl --synth.
  • bash helpers/docker_run.sh make verify-ghdl-yosys to verify ghdl-yosys-plugin.

License

This project is distributed under ISC license.

verifying-foss-hdl-synthesizers's People

Contributors

rodrigomelo9 avatar tux3 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

tux3 tucanae47

verifying-foss-hdl-synthesizers's Issues

Take a look at SymbiFlow/fpga-tool-perf

Firstly, thanks for doing work to improve Yosys compatibility with existing Xilinx code bases. The work is greatly appreciated! I'm very interested in supporting any work which makes Yosys a more viable synthesis frontend.

You might find the project at https://github.com/SymbiFlow/fpga-tool-perf interesting. The project aims to compare performance of Vivado (and maybe in the future ISE) and the open source tools on important designs. It's more focused on "whole designs" and performance rather than compatibility but could still be interesting to you.

We have recently ported the project t use @olofk's EDAlize project for interacting with the FPGA toolchains.

There are also a simple design doc around this project at https://docs.google.com/document/d/16L50pyS3RjYStvRKRoWyVac7NoZKyu45fpPQXJqeKYo/edit

BTW You might also find the following things interesting;

Would you want this be part of SymbiFlow?

Hi @rodrigomelo9,

This type of project seems like it would be an excellent addition to the SymbiFlow project. Did you want to join forces here?

The rest of the SymbiFlow project is using the following tools, so it would probably would be good to use them too?
(a) Support using conda to get latest version of tools. Should also make it easier to test multiple versions too.
(b) Use edalize for toolchain interfacing. Use FuseSoC for design integration.

Thoughts?

Tim "@mithro" Ansell

Usage of docker images from ghdl/docker

It seems that you are using, or suggesting to use, docker images that are maintained/released from ghdl/docker, in order to avoid building ghdl and ghdl-yosys-plugin. Precisely image ghdl/synth:beta is used in https://github.com/rodrigomelo9/verifying-foss-hdl-synthesizers/blob/master/helpers/ghdl.sh

I just wanted to let you know that image ghdl/synth:beta does include a fully usable yosys (apart from ghdl-yosys-plugin and ghdl). Hence, you can update the README not to require installing yosys locally. Furthermore, image ghdl/synth:yosys exists (which ghdl/synth:beta is based on). This includes yosys only, without ghdl or the plugin.

Other related images are available with nextpnr, symbiyosys, etc. See: https://github.com/ghdl/docker#-cache-5-jobs--max-4--11-images-weekly. Usage examples are available at antonblanchard/ghdl-yosys-blink, https://github.com/ghdl/ghdl-yosys-plugin/blob/master/examples/docker.mk and https://github.com/eine/vhdl-cfg/blob/master/GHDLSynth.py. However, this issue is not about suggesting you to drop your scripts in favour of any of the existing solution. Instead, I just want to let you know about this resources, so that you can hopefully find insteresting ideas/solutions to apply to your own projects.

Last, but not least, for any visiting reader in this issue, I feel that most of ghdl/synth docker images do not really correspond to ghdl's namespace. @mithro is open to hosting them in Symbiflow, so ghdl/synth:yosys, ghdl/synth:nextpnr*, ghdl/synth:symbiyosys, etc. might be moved to symbiflow/* in the near future (as soon as we have time to decouple them from ghdl/docker). See context in ghdl/ghdl-yosys-plugin#95.

Evaluate "FREE RANGE VHDL" to be included

Related with the book, there is a repo with almost 860 cores (VHDL and Verilog) taken from OpenCores. It seems a little tricky to deal with, because each IP is in an individual branch, and it seems to be huge (4.5 GB according to this). Maybe could be a good idea an intermediate repository wich extract only the HDL files?

Use of conda to get latest version of tools

Hi @mithro, I read your document, but I need more info about that point :P I will check how to use Conda, and I need an environment which supports:

  • Yosys, GHDL and the ghdl-yosys-plugin, iverilog, verilator.
  • Python3 and edalize.
  • ISE, Vivado and Quartus.

Recommendation/suggestions? How you solve the support for ISE/Vivado? (which means virtual in your document?). Thanks in advance for links or material that you could provide.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.