Git Product home page Git Product logo

Comments (4)

nakengelhardt avatar nakengelhardt commented on August 16, 2024

It supports storing edge data in the off-chip memory. However, currently vertex data can only be stored on-chip. You can set the type of memory used in the configuration file:

[arch]
memtype=hmc

Possible values are bram, hmc, or axi. HMC is well-tested (it uses the PicoFramework HMC interface), AXI is not tested much (Xilinx MIG DDR interface was too slow to be worth using).

from fpgagraphlib.

guoqinglei avatar guoqinglei commented on August 16, 2024

Thanks for your response.
I have tried Xilinx MIG DDR interface before, as you said, it is absolutely slow.
So in your opinion, the AXI or Xilinx MIG DDR interface is not recommended ?
Recently, I do not have an FPGA board yet.
I wonder if I want to do some simulation with your work, is it necessary that I must have an FPGA board ?

from fpgagraphlib.

nakengelhardt avatar nakengelhardt commented on August 16, 2024

The Xilinx MIG I do not recommend. But there are other memory controllers that offer AXI interface with better speed - for example, more recent versions of the PicoFramework have added AXI support to their HMC memory controller, and theoretically I believe the AXI code (in file core_neighbors_axi.py) should work with it. But as I had already built the code to use their custom interface (in file core_neighbors_hmc.py), I continued using this and never tested the AXI with it. The AXI hasn't been used for 2 years so most likely I accidentally made some changes to other code that breaks it.

As for simulation: you can simulate this code using the migen simulator. There are simulation models for the PicoFramework interfaces (HMC, PicoStream, PicoBus) provided in the repository util, so you just need to clone this repo and add the location to your PYTHONPATH. Then, you can do the following:

cd run
python ../src/core_top_pico.py sim

and it will use the settings defined in run/config.ini for simulation (python has to be at least version 3.6). However, the migen simulator is very slow, so you can only simulate very small graphs. Unfortunately the verilog code exported by migen is also not compatible with behavioral simulation, so you cannot use other simulators. You can speed it up a little by using pypy instead of python.

There is another possibility I have not tried: the next generation nmigen has a compatibility layer for old migen code. nmigen can export verilog code that does work well with simulators, so you could e.g. use the PicoFramework simulation facilities (but that requires a ModelSim license), or you would have to provide your own simulation models for the peripherals. If you use only memtype=bram, then it is very simple to build a testbench (e.g. for top_minimal.py, only two input signals are required, the clock and start).
There is also a faster simulator for nmigen being developed currently, but I don't know how complete it is and if the generators from old migen are compatible (for the HMC simulation model).

from fpgagraphlib.

guoqinglei avatar guoqinglei commented on August 16, 2024

Thanks very much for your comprehensive explanations and advices.
I will have a try.

from fpgagraphlib.

Related Issues (5)

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.