अपडेट पर वापस जाएँ
New releaseAug 9, 2026

nextpnr nextpnr-0.11

nextpnr पोर्टेबल FPGA प्लेस और रूट टूल

साझा करें

nextpnr -- एक पोर्टेबल FPGA प्लेस एंड रूट टूल

nextpnr का उद्देश्य विक्रेता-तटस्थ, टाइमिंग-चालित, FOSS FPGA प्लेस एंड रूट टूल होना है।

वर्तमान में nextpnr समर्थन करता है:

  • लैटिस iCE40 उपकरण जो Project IceStorm द्वारा समर्थित हैं
  • लैटिस ECP5 उपकरण जो Project Trellis द्वारा समर्थित हैं
  • लैटिस Nexus उपकरण जो Project Oxide द्वारा समर्थित हैं
  • गोविन LittleBee और Aurora V उपकरण जो Project Apicula द्वारा समर्थित हैं
  • NanoXplore NG-Ultra उपकरण जो Project Beyond द्वारा समर्थित हैं
  • कोलोन चिप GateMate उपकरण जो Project Peppercorn द्वारा समर्थित हैं
  • (प्रायोगिक) Cyclone V उपकरण जो Mistral द्वारा समर्थित हैं
  • (प्रायोगिक) लैटिस MachXO2 उपकरण जो Project Trellis द्वारा समर्थित हैं
  • (प्रायोगिक) Xilinx 7-श्रृंखला उपकरण जो Project X-Ray द्वारा समर्थित हैं
  • (प्रायोगिक) उपयोगकर्ता-परिभाषित आर्किटेक्चर के लिए एक "जेनेरिक" बैक-एंड

Yosys+nextpnr प्रवाह का वर्णन करने वाला एक संक्षिप्त (शैक्षणिक) पेपर arXiv पर पाया जा सकता है।

यहाँ iCE40 के लिए nextpnr का एक स्क्रीनशॉट है। निर्माण निर्देश और आरंभ करने के नोट्स नीचे दिए गए हैं।

यह भी देखें:

पूर्वापेक्षाएँ

nextpnr बनाने के लिए निम्नलिखित पैकेज स्थापित करने की आवश्यकता है, चयनित आर्किटेक्चर से स्वतंत्र:

  • CMake 3.25 या बाद का संस्करण
  • आधुनिक C++17 कंपाइलर (विकास के लिए clang-format आवश्यक)
  • Python 3.5 या बाद का संस्करण, जिसमें विकास लाइब्रेरी शामिल हों (Ubuntu के लिए python3-dev)
    • nextpnr-himbaechel के लिए Python 3.9 या बाद का संस्करण आवश्यक है
    • विंडोज पर सुनिश्चित करें कि vcpkg द्वारा समर्थित समान संस्करण स्थापित हो
  • Boost लाइब्रेरीज़ (Ubuntu के लिए libboost-dev libboost-filesystem-dev libboost-thread-dev libboost-program-options-dev libboost-iostreams-dev libboost-dev या libboost-all-dev)
  • Eigen3 (Ubuntu के लिए libeigen3-dev)
  • डेमो डिज़ाइन को संश्लेषित करने के लिए Yosys आवश्यक है
  • MSVC के साथ विंडोज पर बनाने के लिए, निर्भरता स्थापित करने के लिए vcpkg के उपयोग की सलाह दी जाती है।
    • 32 बिट बिल्ड के लिए: vcpkg install boost-filesystem boost-program-options boost-thread eigen3
    • 64 बिट बिल्ड के लिए: vcpkg install boost-filesystem:x64-windows boost-program-options:x64-windows boost-thread:x64-windows eigen3:x64-windows
    • स्टैटिक बिल्ड के लिए, प्रत्येक पैकेज के नाम में -static जोड़ें। उदाहरण के लिए, eigen3:x64-windows को eigen3:x64-windows-static में बदलें।
    • Python की एक प्रति जो vcpkg में संस्करण से मेल खाती हो (वर्तमान में Python 3.6.4)। आप Embeddable Zip File डाउनलोड कर सकते हैं और इसे निकाल सकते हैं। आपको embeddable zip फ़ाइल के अंदर python36.zip को "Lib" नामक एक नई निर्देशिका में निकालने की आवश्यकता हो सकती है।
  • macOS पर बनाने के लिए, brew उपयोगिता की आवश्यकता है।
    • सभी आवश्यक पैकेज स्थापित करें brew install cmake python boost eigen

आरंभ करना

सबसे पहले, चलाएँ:

git submodule update --init --recursive

nextpnr-ice40

iCE40 समर्थन के लिए, Project IceStorm को /usr/local या किसी अन्य स्थान पर स्थापित करें, जिसे CMake को -DICESTORM_INSTALL_PREFIX=/usr के रूप में पास किया जाना चाहिए। फिर निम्नलिखित कमांड का उपयोग करके nextpnr-ice40 बनाएँ और स्थापित करें:

mkdir -p build && cd build
cmake .. -DARCH=ice40
make -j$(nproc)
sudo make install

विंडोज पर, आप पथ स्पष्ट रूप से निर्दिष्ट कर सकते हैं:

cmake . -B build -DARCH=ice40 -DICESTORM_INSTALL_PREFIX=C:/ProgramData/icestorm -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -G "Visual Studio 15 2017 Win64" -DPython3_EXECUTABLE=C:/Python364/python.exe -DPython3_LIBRARY=C:/vcpkg/packages/python3_x64-windows/lib/python36.lib -DPython3_INCLUDE_DIR=C:/vcpkg/packages/python3_x64-windows/include/python3.6
cmake --build build --config Release

स्टैटिक रिलीज़ बनाने के लिए, टार्गेट ट्रिपलेट को x64-windows से x64-windows-static में बदलें और -DBUILD_STATIC=ON जोड़ें।

iCEstick डेव बोर्ड पर चलने वाला एक सरल उदाहरण ice40/examples/blinky/blinky.* में पाया जा सकता है। उपयोग उदाहरण:

cd ice40/examples/blinky
yosys -p 'synth_ice40 -top blinky -json blinky.json' blinky.v               # blinky.json में संश्लेषित करें
nextpnr-ice40 --hx1k --json blinky.json --pcf blinky.pcf --asc blinky.asc   # प्लेस और रूट चलाएँ
icepack blinky.asc blinky.bin                                               # बाइनरी बिटस्ट्रीम फ़ाइल उत्पन्न करें
iceprog blinky.bin                                                          # iCEstick पर डिज़ाइन अपलोड करें

GUI मोड में nextpnr चलाना (GUI समर्थन के साथ nextpnr बनाने के निर्देश नीचे देखें):

nextpnr-ice40 --json blinky.json --pcf blinky.pcf --asc blinky.asc --gui

(कार्रवाई करने के लिए टूलबार बटन या Python कमांड कंसोल का उपयोग करें जैसे पैक, प्लेस, रूट, और आउटपुट फ़ाइलें लिखना।)

nextpnr-ecp5

ECP5 समर्थन के लिए, Project Trellis को /usr/local या किसी अन्य स्थान पर स्थापित करें, जिसे CMake को -DTRELLIS_INSTALL_PREFIX=/usr/local के रूप में पास किया जाना चाहिए। फिर निम्नलिखित कमांड का उपयोग करके nextpnr-ecp5 बनाएँ और स्थापित करें:

mkdir -p build && cd build
cmake .. -DARCH=ecp5 -DTRELLIS_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install
  • विभिन्न बोर्डों के लिए ECP5 प्रवाह के उदाहरण Project Trellis Examples में पाए जा सकते हैं।

nextpnr-nexus

Nexus समर्थन के लिए, Project Oxide को $HOME/.cargo या किसी अन्य स्थान पर स्थापित करें, जिसे CMake को -DOXIDE_INSTALL_PREFIX=$HOME/.cargo के रूप में पास किया जाना चाहिए। फिर निम्नलिखित कमांड का उपयोग करके nextpnr-nexus बनाएँ और स्थापित करें:

mkdir -p build && cd build
cmake .. -DARCH=nexus -DOXIDE_INSTALL_PREFIX=$HOME/.cargo
make -j$(nproc)
sudo make install
  • विभिन्न बोर्डों के लिए Nexus प्रवाह के उदाहरण Project Oxide Examples में पाए जा सकते हैं।

nextpnr-mistral

Cyclone V समर्थन के लिए, Mistral को $HOME/mistral या किसी अन्य स्थान पर क्लोन करें और इस पथ को CMake को -DMISTRAL_ROOT=$HOME/mistral के रूप में पास करें। फिर निम्नलिखित कमांड का उपयोग करके nextpnr-mistral बनाएँ और स्थापित करें:

mkdir -p build && cd build
cmake .. -DARCH=mistral -DMISTRAL_ROOT=$HOME/mistral
make -j$(nproc)
sudo make install

Cyclone V समर्थन वर्तमान में प्रायोगिक है और इसका सीमित परीक्षण हुआ है। बैक-एंड सक्रिय API रिफैक्टरिंग से गुजर रहा है, और इसकी संरचना, बिल्ड आवश्यकताएँ और एकीकरण बिंदु संस्करणों के बीच बदल सकते हैं।

nextpnr-generic

जेनेरिक लक्ष्य मनमाने कस्टम आर्किटेक्चर के लिए प्लेसमेंट और रूटिंग चलाने की अनुमति देता है।

mkdir -p build && cd build
cmake .. -DARCH=generic
make -j$(nproc)
sudo make install

जेनेरिक प्रवाह का उपयोग कैसे करें इसका एक उदाहरण generic/examples में है। जेनेरिक आर्किटेक्चर दस्तावेज़ भी देखें।

nextpnr-himbaechel

श्रेणियाँ