
nextpnr nextpnr-0.11
nextpnr أداة محمولة لتنسيب وتوجيه FPGA
nextpnr -- أداة تنسيب وتوجيه FPGA قابلة للنقل
تطمح nextpnr إلى أن تكون أداة تنسيب وتوجيه FPGA حرة ومفتوحة المصدر (FOSS)، محايدة تجاه البائعين ومحركة بالتوقيت.
حاليًا تدعم nextpnr:
- أجهزة Lattice iCE40 المدعومة عبر Project IceStorm
- أجهزة Lattice ECP5 المدعومة عبر Project Trellis
- أجهزة Lattice Nexus المدعومة عبر Project Oxide
- أجهزة Gowin LittleBee و Aurora V المدعومة عبر Project Apicula
- أجهزة NanoXplore NG-Ultra المدعومة عبر Project Beyond
- أجهزة Cologne Chip GateMate المدعومة عبر Project Peppercorn
- (تجريبي) أجهزة Cyclone V المدعومة عبر Mistral
- (تجريبي) أجهزة Lattice MachXO2 المدعومة عبر Project Trellis
- (تجريبي) أجهزة Xilinx من السلسلة 7 المدعومة عبر Project X-Ray
- (تجريبي) نهاية خلفية "عامة" لبنى معمارية يحددها المستخدم
يمكن العثور على ورقة (أكاديمية) موجزة تصف مسار عمل Yosys+nextpnr على arXiv.
فيما يلي لقطة شاشة من nextpnr لـ iCE40. يمكن العثور على تعليمات البناء وملاحظات البدء أدناه.
انظر أيضًا:
المتطلبات الأساسية
يجب تثبيت الحزم التالية لبناء nextpnr، بغض النظر عن البنية المعمارية المحددة:
- CMake 3.25 أو أحدث
- مُترجم C++17 حديث (
clang-formatمطلوب للتطوير) - Python 3.5 أو أحدث، بما في ذلك مكتبات التطوير (
python3-devلأوبونتو)- يتطلب
nextpnr-himbaechelإصدار Python 3.9 أو أحدث - على ويندوز تأكد من تثبيت نفس الإصدار المدعوم من vcpkg
- يتطلب
- مكتبات Boost (
libboost-dev libboost-filesystem-dev libboost-thread-dev libboost-program-options-dev libboost-iostreams-dev libboost-devأوlibboost-all-devلأوبونتو) - Eigen3 (
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). يمكنك تنزيل ملف Zip القابل للتضمين وفك ضغطه. قد تحتاج إلى فك ضغط
python36.zipداخل ملف zip القابل للتضمين إلى دليل جديد يُسمى "Lib".
- للبناءات 32 بت:
- للبناء على 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 # synthesize into blinky.json
nextpnr-ice40 --hx1k --json blinky.json --pcf blinky.pcf --asc blinky.asc # run place and route
icepack blinky.asc blinky.bin # generate binary bitstream file
iceprog blinky.bin # upload design to iCEstick
تشغيل nextpnr في وضع الواجهة الرسومية (انظر أدناه للحصول على تعليمات بناء 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.
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.
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 حاليًا تجريبي وذو اختبارات محدودة. النهاية الخلفية تخضع لإعادة هيكلة نشطة لواجهة برمجة التطبيقات، وقد تتغير بنيتها ومتطلبات البناء ونقاط الدمج بين الإصدارات.
nextpnr-generic
الهدف العام يتيح تشغيل التنسيب والتوجيه لأي بنى معمارية مخصصة.
mkdir -p build && cd build
cmake .. -DARCH=generic
make -j$(nproc)
sudo make install
مثال على كيفية استخدام المسار العام موجود في generic/examples. انظر أيضًا إلى وثائق البنية المعمارية العامة.
nextpnr-himbaechel
هدف himbaechel يتيح تشغيل التنسيب والتوجيه للبنى المعمارية الأكبر التي تشترك في بنية موحدة.
gowin
لدعم Gowin، ثبّت Project Apicula
mkdir -p build && cd build
cmake .. -DARCH="himbaechel" -DHIMBAECHEL_UARCH="gowin"
make -j$(nproc)
sudo make install
- يمكن العثور على أمثلة لمسار عمل Gowin لمجموعة من اللوحات في أمثلة Project Apicula.
ng-ultra
لدعم NanoXplore NG-Ultra، استنسخ مستودع Project Beyond DB