Giter Club home page Giter Club logo

Comments (3)

rachitnigam avatar rachitnigam commented on June 19, 2024

Page 208 of the manual says that when Vivado can't figure the value of a dynamic iterator, it assumes that all reads depend on write and vice-versa.

In this example:

for (row = 0; row < rows + 1; row++) {
  for (col = 0; col < cols + 1; col++) {
  #pragma HLS PIPELINE II=1
  if (col < cols) {
    buff_A[2][col] = buff_A[1][col]; // read from buff_A[1][col]
    buff_A[1][col] = buff_A[0][col]; // write to buff_A[1][col]
    buff_B[1][col] = buff_B[0][col];
    temp = buff_A[0][col];
  }

Vivado will not respect a PIPELINE pragma. The manual states that program has to manually specify the lack of dependency using DEPENDENCE pragma.

Since we are already very conservative with pipelining and don't allow bank conflicts, we should aggressively use this pragma.

from dahlia.

rachitnigam avatar rachitnigam commented on June 19, 2024

While thinking about an implementation strategy, I came across this discussion

This comment in the thread is slightly concerning to me:

When a loop or function is pipelined, Vivado HLS unrolls all loops in the hierarchy below the function or loop so as to meet your pipeline directive.

This would mean that some new syntax of the form:

for (let ...) unroll .. pipeline k {
  for (...) ... pipeline l {
  }
}

might not preserve the semantics we claim it has (where the inner loops has an initiation interval of l while the outer loops has k). I'm trying to find more in depth explanation of the pragma. The explanation in Vivado manual isn't complete. @sa2257 do you know of any other sources I should read?

A higher level point is we need to clarify the semantics of pipelining in nested loops.

from dahlia.

rachitnigam avatar rachitnigam commented on June 19, 2024

The occurrence pragma also seems important for pipelining things effectively. Not sure if there is a clean semantics for those.

from dahlia.

Related Issues (20)

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.