Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make gateware fails for possible all ISE based Boards #460

Open
cklarhorst opened this issue Jun 19, 2020 · 4 comments
Open

Make gateware fails for possible all ISE based Boards #460

cklarhorst opened this issue Jun 19, 2020 · 4 comments

Comments

@cklarhorst
Copy link

cklarhorst commented Jun 19, 2020

Using the latest master branch it doesn't seem to be possible to build the gateware for any ISE based Board. The process fails with the error message:

Running directed packing...
ERROR:Pack:1107 - Pack was unable to combine the symbols listed below into a
   single IOB component because the site type selected is not compatible.
   Further explanation:
   The buffer "IBUFG" can not merge with signal "clk100." The signal has a
   NOMERGE property.
   Symbols involved:
        BUF symbol "IBUFG" (Output Signal = crg_clk100a)
        PAD symbol "clk100" (Pad Signal = clk100)

So the problem seems to be the keep property that is added to the clk100 signal in the top.v file.

(* keep = "true" *)     input clk100,

Git bisect revealed that the last working commit is 688d49f.
This version doesn't add the property to the mentioned signal.

Is it already a known problem?
Does someone know why the keep property was added? Is it safe to remove it?

Thank you very much in advance

Update:
The code that produces the keep signal is located in the litex submodule: third_party/litex/litex/build/xilinx/ise.py:247

def add_period_constraint(self, platform, clk, period):
        clk.attr.add("keep")
        platform.add_platform_command(

I also made a quick version where I removed that keep attribute (https://github.com/cklarhorst/litex-buildenv.git).
With this change I was able to successfully build the gateware for the atyls board on the latest master commit.

There is another issue in the litex project (enjoy-digital/litex#438) about the keep attribute but it has a different error message.

@mithro
Copy link
Member

mithro commented Jun 23, 2020

@mateusz-holenko - Any idea?

@mateusz-holenko
Copy link
Collaborator

mateusz-holenko commented Jun 25, 2020

Hi @cklarhorst!

I can confirm it is also visible in CI: https://travis-ci.com/github/antmicro/litex-buildenv/jobs/346569019#L6459-L6467. I'm currently working on bumping the LiteX submodule in litex-buildenv, but it doesn't look it will solve this problem.

@enjoy-digital do you have any suggestions?

Travis CI enables your team to test and ship your apps with confidence. Easily sync your projects with Travis CI and you'll be testing your code in minutes.

@enjoy-digital
Copy link
Member

@cklarhorst, @mateusz-holenko: the keep property was added automatically on all signals with a timing constraints to simplify constraints in the design. This is working fine with all toolchains except ISE and i still need to investigate this.

@cklarhorst
Copy link
Author

cklarhorst commented Jun 25, 2020

Sadly I'm no expert on that front but according to ug901-vivado-synthesis.pdf page 46-47 KEEP=True in Vivado means: Keep the signal during synthesis and no constrains for the later stages like P&R. While according to the Xilinx Constraints Guide page 135 for ISE it means "Prevents a net from being absorbed into a logic block" but it also implies a NOMERGE constraint for the later implementation phase.

Maybe for ISE, it is required to set KEEP to "soft" so that it doesn't imply the NOMERGE constraint. (A quick test showed that ISE successfully builds a bitstream with KEEP="soft").
ISE has also the S (Save) attribute, AR#35504 may indicate that it is more about removal prevention.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants