Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
nextpnr — nextpnr पोर्टेबल FPGA प्लेस और रूट टूल | Kitploit
उपकरण/GitHubGitHub/yosyshq/nextpnr
एम्बेडेड सिस्टम सुरक्षाहार्डवेयर सुरक्षापेपर और शोधलर्निंग और शिक्षाफर्मवेयर विश्लेषण
GitHubyosyshq/nextpnr

nextpnr

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

रिपॉजिटरी देखें
1.7k3311 दिन पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

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 का एक स्क्रीनशॉट है। निर्माण निर्देश और आरंभ करने के नोट्स नीचे दिए गए हैं।

यह भी देखें:

  • सामान्य प्रश्न
  • आर्किटेक्चर API

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

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

आरंभ करना

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

root@kitploit:~
git submodule update --init --recursive

nextpnr-ice40

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

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH=ice40
make -j$(nproc)
sudo make install

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

root@kitploit:~
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.* में पाया जा सकता है। उपयोग उदाहरण:

root@kitploit:~
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 बनाने के निर्देश नीचे देखें):

root@kitploit:~
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 बनाएँ और स्थापित करें:

root@kitploit:~
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 बनाएँ और स्थापित करें:

root@kitploit:~
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 बनाएँ और स्थापित करें:

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

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

nextpnr-generic

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

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH=generic
make -j$(nproc)
sudo make install

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

nextpnr-himbaechel

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

gowin

Gowin समर्थन के लिए, Project Apicula स्थापित करें

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH="himbaechel" -DHIMBAECHEL_UARCH="gowin"
make -j$(nproc)
sudo make install
  • विभिन्न बोर्डों के लिए Gowin प्रवाह के उदाहरण Project Apicula Examples में पाए जा सकते हैं।

ng-ultra

NanoXplore NG-Ultra समर्थन के लिए, Project Beyond DB रेपो क्लोन करें

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH="himbaechel" -DHIMBAECHEL_UARCH="ng-ultra" -DHIMBAECHEL_PRJBEYOND_DB=/path/to/prjbeyond-db -DHIMBAECHEL_NGULTRA_DEVICES=ng-ultra
make -j$(nproc)
sudo make install

कृपया ध्यान दें कि बाइनरी बिटस्ट्रीम निर्माण के लिए NanoXplore से Impulse टूल की आवश्यकता है।

gatemate

कोलोन चिप GateMate समर्थन के लिए, Project Peppercorn क्लोन करें

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH="himbaechel" -DHIMBAECHEL_UARCH="gatemate" -DHIMBAECHEL_PEPPERCORN_PATH=/path/to/prjpeppercorn
make -j$(nproc)
sudo make install

GUI

nextpnr GUI डिफ़ॉल्ट रूप से नहीं बनाया जाता है, ताकि एक मानक हेडलेस बिल्ड के लिए निर्भरता की संख्या कम हो सके। इसे सक्षम करने के लिए, CMake कमांड लाइन में -DBUILD_GUI=ON जोड़ें और सुनिश्चित करें कि Qt5/Qt6 और OpenGL उपलब्ध हैं:

Qt6 के लिए:

  • Ubuntu 22.04 LTS या बाद के संस्करण पर, qt6-base-dev स्थापित करें
  • MSVC vcpkg के लिए, qt-base (32-बिट) या qt-base:x64-windows (64-बिट) स्थापित करें
  • Homebrew के लिए, qt6 स्थापित करें और पथ में qt6 जोड़ें: echo 'export PATH="/usr/local/opt/qt/bin:$PATH"' >> ~/.bash_profile ` - यह परिवर्तन अगले टर्मिनल सत्र में प्रभावी होगा, इसलिए कृपया बनाने से पहले टर्मिनल विंडो फिर से खोलें

Qt5 के लिए:

  • Ubuntu 22.04 LTS पर, qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools स्थापित करें
  • अन्य Ubuntu संस्करणों पर, qt5-default स्थापित करें
  • MSVC vcpkg के लिए, qt5-base (32-बिट) या qt5-base:x64-windows (64-बिट) स्थापित करें
  • Homebrew के लिए, qt5 स्थापित करें और पथ में qt5 जोड़ें: echo 'export PATH="/usr/local/opt/qt/bin:$PATH"' >> ~/.bash_profile ` - यह परिवर्तन अगले टर्मिनल सत्र में प्रभावी होगा, इसलिए कृपया बनाने से पहले टर्मिनल विंडो फिर से खोलें

एकाधिक आर्किटेक्चर

एक साथ कई आर्किटेक्चर के लिए nextpnr बनाने के लिए, -DARCH के साथ अर्धविराम-पृथक सूची का उपयोग किया जा सकता है।

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH="ice40;ecp5"
make -j$(nproc)
sudo make install

हर उपलब्ध स्थिर आर्किटेक्चर बनाने के लिए, -DARCH=all का उपयोग करें। प्रायोगिक आर्क (वर्तमान में nexus) शामिल करने के लिए, -DARCH=all+alpha का उपयोग करें।

प्रति-माइक्रोआर्किटेक्चर हिमबैशल

समर्थित माइक्रोआर्किटेक्चर में से प्रत्येक के लिए एकल nextpnr-himbachel निष्पादनयोग्य बनाने के लिए, -DHIMBAECHEL_SPLIT का उपयोग करें।

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH="himbaechel" -DHIMBAECHEL_UARCH="gowin;ng-ultra"
make -j$(nproc)
sudo make install

ऐसे बिल्ड में, एकल nextpnr-himbaechel बाइनरी के बजाय, दो बाइनरी nextpnr-himbaechel-gowin और nextpnr-himbaechel-ng-ultra बनाई जाती हैं। हालाँकि वे एक साथ स्थापित होते हैं, प्रत्येक माइक्रोआर्किटेक्चर दूसरे से पूरी तरह स्वतंत्र है, और चलाने के लिए केवल अपने संबंधित .../share/himbaechel/<माइक्रोआर्किटेक्चर>/ चिप डेटाबेस निर्देशिका की आवश्यकता है। स्प्लिट बिल्ड व्यक्तिगत वितरित कलाकृतियों के आकार को कम करता है (हालाँकि कुल आकार बढ़ता है), और विभिन्न संस्करणों की कलाकृतियों के सह-स्थापना की अनुमति देता है।

क्रॉस-कम्पाइलेशन

चिप डेटाबेस के अलावा, nextpnr को बिल्ड सिस्टम के लिए bba टूल संकलित करने की आवश्यकता है। इस टूल को एक अलग प्रोजेक्ट के रूप में संकलित किया जा सकता है:

root@kitploit:~
cd bba
cmake .
make

यह एक bba-export.cmake फ़ाइल बनाएगा। क्रॉस-बिल्डिंग nextpnr करते समय -DBBA_IMPORT=/path/to/bba-export.cmake का उपयोग करके इस फ़ाइल का पथ प्रदान करें।

nextpnr बनाने के लिए अतिरिक्त नोट्स

निम्नलिखित बिना GUI, Python समर्थन, HeAP एनालिटिकल प्लेसर और केवल HX1K समर्थन के iCE40 आर्किटेक्चर का डीबग बिल्ड चलाता है:

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH=ice40 -DCMAKE_BUILD_TYPE=Debug -DBUILD_PYTHON=OFF -DICE40_DEVICES=1k
make -j$(nproc)

iCE40 आर्किटेक्चर के लिए स्टैटिक बिल्ड रिलीज़ बनाने के लिए निम्नलिखित का उपयोग करें:

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH=ice40 -DBUILD_PYTHON=OFF -DSTATIC_BUILD=ON
make -j$(nproc)

HeAP प्लेसर का सॉल्वर बहुत बड़े डिज़ाइनों पर त्वरण के लिए वैकल्पिक रूप से OpenMP का उपयोग कर सकता है। इसे -DUSE_OPENMP=yes को cmake में पास करके सक्षम करें (कंपाइलर समर्थन भिन्न हो सकता है)।

आप उस स्थान को बदल सकते हैं जहाँ nextpnr स्थापित किया जाएगा (यह आमतौर पर /usr/local पर डिफ़ॉल्ट होगा) -DCMAKE_INSTALL_PREFIX=/install/prefix का उपयोग करके।

डेवलपर्स के लिए नोट्स

  • सभी कोड को .clang-format में शैली नियमों के अनुसार clang-format का उपयोग करके स्वरूपित किया जाता है (LLVM आधारित जिसमें बढ़ी हुई इंडेंट चौड़ाई और कक्षाओं के बाद ब्रेस रैप्स)।
  • सभी स्रोत कोड को स्वचालित रूप से स्वरूपित करने के लिए, make clangformat चलाएँ।
  • आर्किटेक्चर API पर अतिरिक्त दस्तावेज़ीकरण के लिए विकी देखें।

मूवी रिकॉर्ड करना

  • प्लेस-एंड-रूट की मूवी रिकॉर्डिंग सहेजने के लिए टूलबार में रिकॉर्डिंग आइकन पर क्लिक करें और खाली निर्देशिका चुनें जहाँ रिकॉर्डिंग फ़ाइलें संग्रहीत की जाएंगी और छोड़ने के लिए फ्रेम चुनें।
  • मैन्युअल रूप से उन सभी PnR ऑपरेशनों को शुरू करें जो आप चाहते हैं
  • रिकॉर्डिंग रोकने के लिए रिकॉर्डिंग आइकन पर फिर से क्लिक करें
  • फ़ाइलों वाली निर्देशिका पर जाएँ और ffmpeg -f image2 -r 1 -i movie_%05d.png -c:v libx264 nextpnr.mp4 निष्पादित करें

परीक्षण

  • परीक्षण बाइनरी भी बनाने के लिए, -DBUILD_TESTS=ON का उपयोग करें और make के बाद उन्हें चलाने के लिए make test चलाएँ, या आप अलग-अलग बाइनरी चला सकते हैं।
  • कोड सैनिटाइज़र का उपयोग करने के लिए cmake विकल्पों का उपयोग करें:
    • -DSANITIZE_ADDRESS=ON
    • -DSANITIZE_MEMORY=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
    • -DSANITIZE_THREAD=ON
    • -DSANITIZE_UNDEFINED=ON
  • वैलग्राइंड उदाहरण चलाना valgrind --leak-check=yes --tool=memcheck ./nextpnr-ice40 --json ice40/blinky.json
  • कोड कवरेज के साथ परीक्षण चलाने के लिए -DBUILD_TESTS=ON -DCOVERAGE का उपयोग करें और make के बाद make ice40-coverage चलाएँ

लिंक और संदर्भ

संश्लेषण, सिमुलेशन और तर्क अनुकूलन

  • Yosys
  • Icarus Verilog
  • ABC

FPGA बिटस्ट्रीम दस्तावेज़ीकरण (और उपकरण) परियोजनाएँ

  • Project IceStorm (Lattice iCE40)
  • Project Trellis (Lattice ECP5)
  • Project X-Ray (Xilinx 7-Series)
  • Project Chibi (Intel MAX-V)

अन्य FOSS FPGA प्लेस और रूट परियोजनाएँ

  • Arachne PNR
  • VPR/VTR
  • SymbiFlow
टूल डाउनलोड करें
  • स्टैटिक बिल्ड के लिए, प्रत्येक पैकेज के नाम में -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
  • उसके बाद कवरेज रिपोर्ट देखने के लिए अपने ब्राउज़र में ice40-coverage/index.html खोलें
  • ध्यान दें कि रिपोर्ट उत्पन्न करने के लिए lcov की आवश्यकता है