Giter Club home page Giter Club logo

dart's People

Contributors

amamory avatar biruk-belay avatar qzsec avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

mfkiwl

dart's Issues

integrate `bus manager` with DART

Currently DART uses standard Xilinx busses to interconnect the reconfigurable regions. bus manager should be supported by DART, providing a more complete system composability and better control of system timing requirements.

Support 64-bits address in C_M_AXI_MEM_BUS_ADDR_WIDTH

Zynq-7000 devices are 32 bits, therefore, C_M_AXI_MEM_BUS_ADDR_WIDTH = 32.
However, for Ultrascale devices, C_M_AXI_MEM_BUS_ADDR_WIDTH could be 64 bits
if the IPs are synthesized with config_interface -m_axi_addr64

At this moment, even for Ultrascale devices, DART uses C_M_AXI_MEM_BUS_ADDR_WIDTH is fixed to 32 bits. Thus, when using a dart-generated design, make sure that FRED server is compiled without the define HW_TASKS_A64, to make it compatible with 32 bits.

minimal test: configuration matrix

This is a configuration matrix for the test/minimal:

configuration compilation DART exec board exec
ON,pynq OK OK N.I.
OFF,pynq OK OK N.I.
OFF,zcu_102 OK OK N.I.
OFF,us_96 OK OK N.I.

N.I.: not implemented.

Tests on the board are still not implemented.

minimal test failing for config ON/OFF - Zynq

DART exists in error when running with partitioning mode in both ON or OFF, and targeting Zynq:

source /home/aamory/repos/dart/dart/tests/minimal/build_ON_zynq/static.tcl -notrace
WARNING: [Project 1-153] The current project device 'xc7z010clg400-1' does not match with the device on the 'WWW.DIGILENTINC.COM:PYNQ-Z1:PART0:1.0' board part. A device change to match the device on 'WWW.DIGILENTINC.COM:PYNQ-Z1:PART0:1.0' board part is being done. Please upgrade the IP in the project via the upgrade_ip command or by selecting Reports => Reports IP Status.
INFO: [Project 1-152] Project part set to zynq (xc7z020clg400-1)
INFO: [IP_Flow 19-234] Refreshing IP repositories
INFO: [IP_Flow 19-1700] Loaded user IP repository '/home/aamory/repos/dart/dart/tests/minimal/build_ON_zynq/Sources/ip_repo'.
INFO: [IP_Flow 19-2313] Loaded Vivado IP repository '/storage/Xilinx/Vivado/2020.2/data/ip'.
Wrote : </home/aamory/repos/dart/dart/tests/minimal/build_ON_zynq/static_hw/dart_project.srcs/sources_1/bd/dart/dart.bd>
CRITICAL WARNING: [filemgmt 20-730] Could not find a top module in the fileset sources_1.
Resolution: With the gui up, review the source files in the Sources window. Use Add Sources to add any needed sources. If the files are disabled, enable them. You can also select the file and choose Set Used In from the pop-up menu. Review if they are being used at the proper points of the flow.
ERROR: [BD 41-758] The following clock pins are not connected to a valid clock source:
/processing_system7_0/M_AXI_GP0_ACLK
/acc_0/ap_clk
/pr_decoupler_0/aclk
/axi_interconnect_0/ACLK
/axi_interconnect_0/S00_ACLK
/axi_interconnect_0/M00_ACLK
/axi_interconnect_0/M01_ACLK
/axi_interconnect_1/ACLK
/axi_interconnect_1/S00_ACLK
/axi_interconnect_1/M00_ACLK

Seems to be some inconsistency in the IP interface with the static part.

automated devicetree generation

unable to generate a design with multiple reconfigurable regions with zcu102

For example, when using an input file like this, with 2 RRs and one IP per RR,

dart:
    partitions: 
      - hw_ips:
        - ip_name: "sum_vec"
          top_name: "sum_vec_top"
          timeout: 1000
          buffers: [32768, 32768, 32768]
      - hw_ips:
        - ip_name: "sub_vec"
          top_name: "sub_vec_top"
          timeout: 1000
          buffers: [32768, 32768, 32769]

It generates an error at the physical synthesis because one of the RR has BRAMs at the right hand side border, which is not allowed.
This error happens with any configuration with more than 1 RR.

ILA support for zcu102 board

When the YAML file has the debug key word, it adds ILA in the reconfigurable region. But it works only for the Pynq board.
Add ILA support for the other boards.

check IP interface compliance

Most errors when using dart is related to interfaces mismatches from the IPs. This produces valid vivado designs that actually dont work when running in the board. This leads to long debugging sections. The idea is to implement some IP interface checking before the IP synthesis phase of dart, to catch the error ASAP.

support multiple slots per partition

FRED runtime supports multiple slots per partitions. However, DART doesnt.
Multiple slots per partition would give to a certain IP multiple reconfigurable regions to be used in runtime.
It means that the FRED scheduler could choose where (i.e. which reconfigurable region) to deploy a certain IP.

Note that, in pr_tool::generate_fred_files, in the part that writes the arch.csv file, the slot information is fixed to 1 since dart only supports 1 slot per partition..

Add AXI performance monitors (APM) to get bus metrics in runtime

support user-defined static part

DART has 4 main steps: ip synthesis, static part synthesis, floorplan optimization, implementation. It would be beneficial to support a user defined static part, since this part typically depends on the interfaces used in a design. For instance, a video processing application would have a camera interface to receive the input frames. Currently DART only implements a basic static part, setting up only the reconfigurable regions. The idea would be the user to define a static part DCP file. In this case DART would skipping its 2nd step and continue executing its remaining steps.

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.