Giter Club home page Giter Club logo

Comments (5)

daveshah1 avatar daveshah1 commented on August 16, 2024 2

You can use two CORE PLLs if you want to. But beware that whenever you use a CORE PLL, the corresponding dedicated PLL input pin becomes reserved and cannot be used as a general purpose input (it can still be used as a general purpose output though).

from icestorm.

esynr3z avatar esynr3z commented on August 16, 2024 1

TL;DR

You have to pay more attention to Bank 0 and Bank 2 GBIN pins, especially if you want to use PLLs AND use free clock buffer pins as IOs.

Detailed description

If you want to use ice40_PLL_PAD, ice40_PLL_2F_PAD or ice40_PLL_2_PAD you have to route external clock only to:

  • IOB_81_GBIN5 - pin 49
  • IOT_198_GBIN0 - pin 129

I didn't found that information in any vendor PDF's or pinout files, just figured out it experimentally.

If you want to use ice40_PLL_CORE or ice40_PLL_2F_CORE you won't be able to use PLL dedicated pins as inputs.

Some additional information from iCE40 sysCLOCK PLL Design and Usage Guide (FPGA-TN-02052-1.2):

5.1.2. iCEcube2 Software

* If any instance of PLL is placed in the location of the I/O cell, then, an instance of SB_GB_IO cannot be placed in
that particular I/O cell.

* If an instance of ice40_PLL_CORE or ice40_PLL_2F_CORE is placed, an instance of SB_IO in output-only mode can
be placed in the associated I/O cell location.

* If an instance of ice40_PLL_PAD, ice40_PLL_2F_PAD, ice40_PLL_2_PAD is placed, the associated I/O cell cannot be
used by any SB_IO or SB_GB_IO.

* If an instance of ice40_PLL_2F_CORE, ice40_PLL_2F_PAD, ice40_PLL_2_PAD is placed, an instance of SB_IO in
output-only mode can be placed in the right neighboring I/O cell.

from icestorm.

daveshah1 avatar daveshah1 commented on August 16, 2024

Pin 128 is not a dedicated PLL input, if you change that to 129 then it works.

from icestorm.

esynr3z avatar esynr3z commented on August 16, 2024

Wow, thanks! I tried to find this information with no success.

Just to be sure. If I use non-dedicated PLL input for clock, I'm able to use the only one CORE PLL and not able to use any PAD type. Right?

from icestorm.

esynr3z avatar esynr3z commented on August 16, 2024

I think I faced exactly the problem you described. What actually inputs pins are dedicated to PLL?
I guess 129 and 49?

I use SB_PLL40_CORE + SB_PLL40_2F_CORE in my project, and nextpnr gives me an error:

Info: Packing constants..
Info: Packing IOs..
Info: Packing LUT-FFs..
Info:     1128 LCs used as LUT4 only
Info:      507 LCs used as LUT4 and DFF
Info: Packing non-LUT FFs..
Info:      312 LCs used as DFF only
Info: Packing carries..
Info:      418 LCs used as CARRY only
Info: Packing RAMs..
Info: Placing PLLs..
Info:   constrained PLL 'pll1' to X16/Y33/pll_3
ERROR: PLL 'pll2' couldn't be placed anywhere, no suitable BEL found.
ERROR: Packing design failed.
4 warnings, 2 errors
Can't open input file: No such file or directory
Error: Failed to open input file.

In this project almost all IOs are in use, so I can guess that I'm trying to use as in input some PLL related pin.

from icestorm.

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.