
nextpnr पोर्टेबल FPGA प्लेस और रूट टूल
nextpnr का उद्देश्य विक्रेता-तटस्थ, टाइमिंग-चालित, FOSS FPGA प्लेस एंड रूट टूल होना है।
वर्तमान में nextpnr समर्थन करता है:
Yosys+nextpnr प्रवाह का वर्णन करने वाला एक संक्षिप्त (शैक्षणिक) पेपर arXiv पर पाया जा सकता है।
यहाँ iCE40 के लिए nextpnr का एक स्क्रीनशॉट है। निर्माण निर्देश और आरंभ करने के नोट्स नीचे दिए गए हैं।
यह भी देखें:
nextpnr बनाने के लिए निम्नलिखित पैकेज स्थापित करने की आवश्यकता है, चयनित आर्किटेक्चर से स्वतंत्र:
clang-format आवश्यक)python3-dev)
nextpnr-himbaechel के लिए Python 3.9 या बाद का संस्करण आवश्यक हैlibboost-dev libboost-filesystem-dev libboost-thread-dev libboost-program-options-dev libboost-iostreams-dev libboost-dev या libboost-all-dev)libeigen3-dev)vcpkg install boost-filesystem boost-program-options boost-thread eigen3vcpkg 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 में बदलें।python36.zip को "Lib" नामक एक नई निर्देशिका में निकालने की आवश्यकता हो सकती है।brew install cmake python boost eigenसबसे पहले, चलाएँ:
git submodule update --init --recursive
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 कमांड कंसोल का उपयोग करें जैसे पैक, प्लेस, रूट, और आउटपुट फ़ाइलें लिखना।)
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
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
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 रिफैक्टरिंग से गुजर रहा है, और इसकी संरचना, बिल्ड आवश्यकताएँ और एकीकरण बिंदु संस्करणों के बीच बदल सकते हैं।
जेनेरिक लक्ष्य मनमाने कस्टम आर्किटेक्चर के लिए प्लेसमेंट और रूटिंग चलाने की अनुमति देता है।
mkdir -p build && cd build
cmake .. -DARCH=generic
make -j$(nproc)
sudo make install
जेनेरिक प्रवाह का उपयोग कैसे करें इसका एक उदाहरण generic/examples में है। जेनेरिक आर्किटेक्चर दस्तावेज़ भी देखें।