cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
herand
Participant
Participant
1,307 Views
Registered: ‎07-24-2017

Applying user constraints with Partial Reconfiguration fails

Jump to solution

Hello,

 

I recently started working with Partial Reconfiguration and ran into the following problem:

I have a toplevel design in Projetc Flow, which includes a module "PR_module" (yes, very creative). Following UG909, I created a Partition Definition for this module and two reconfig modules. Both of these include a combinatorial loop, which is intended.
Therefore, I now have 2 OOC synthesis runs, which succeed, 1 statis synthesis run, 1 static implementation run and 2 child implementation runs, of which one fails with the error message [DRC LUTLP-1] Combinatorial Loop...

 

In a non-PR project, I would have applied the following user constraint to a LUT involved in the loop:

 

set_property ALLOW_COMBINATORIAL_LOOPS true [get_nets {toplevel/PR_module/andGate/out}] 

In the PR-Flow, I'm not sure how to do this and I tried many ways.

 

Intuitively and as suggested in UG909, I split the constraints in static and dynamic sets, let the static synthesis and implementation run and apply different dynamic sets for each child implementation of the reconfigurable modules.

As fas as I understood, this implementation runs are not based on the toplevel as the current_design but the module itself and therefor I applied the following xdc-constraint with SCOPE_TO_REF=PR_module:

 

set_property ALLOW_COMBINATORIAL_LOOPS true [get_nets {andGate/out}]

The parent implementation run get's the first reconfigurable module as default (no greybox) and one child implementation get the other configuration. Implementation for both works, but when I try to write the bitstreams, the child fails with the [DRC LUTLP-1] warning. However, I get no warning that the net could not be found when running the implementation so I assume that the constraint was applied.

 

Could you please tell me what I am doing wrong in my flow?

 

 

 

0 Kudos
1 Solution

Accepted Solutions
herand
Participant
Participant
1,735 Views
Registered: ‎07-24-2017

I have found the solution, which was just forgeting to port over a file from the static design:

 

At the step of write_bitstream, I applied a tcl.pre with the following content:

 

set_property SEVERITY {Warning} [get_drc_checks LUTLP-1]

In order to be able to have combinatorial loops, it's not enough to allow them by the xdc constraint but also supress the error by degrading it to a warning.

 

Some additional info, which might help others if they find this thread useful:

 

When creating the project and applying the tcl.pre in the project settings, the tcl file application

did not get applied to the child implementation runs but only to parent implementation.

This step can be repeated by either selecting the child implementation run and setting the file

in the "Implementation Run Properties" window -> "STEPS" -> "WRITE_BITSTREAM" -> "TCL" -> "PRE"

or by using the TCL console in a manner like:

set_property STEPS.WRITE_BITSTREAM.TCL.PRE {path_to_file.tcl} [get_runs child_0_impl_1]

View solution in original post

1 Reply
herand
Participant
Participant
1,736 Views
Registered: ‎07-24-2017

I have found the solution, which was just forgeting to port over a file from the static design:

 

At the step of write_bitstream, I applied a tcl.pre with the following content:

 

set_property SEVERITY {Warning} [get_drc_checks LUTLP-1]

In order to be able to have combinatorial loops, it's not enough to allow them by the xdc constraint but also supress the error by degrading it to a warning.

 

Some additional info, which might help others if they find this thread useful:

 

When creating the project and applying the tcl.pre in the project settings, the tcl file application

did not get applied to the child implementation runs but only to parent implementation.

This step can be repeated by either selecting the child implementation run and setting the file

in the "Implementation Run Properties" window -> "STEPS" -> "WRITE_BITSTREAM" -> "TCL" -> "PRE"

or by using the TCL console in a manner like:

set_property STEPS.WRITE_BITSTREAM.TCL.PRE {path_to_file.tcl} [get_runs child_0_impl_1]

View solution in original post