Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
nextpnr — nextpnr أداة محمولة لتنسيب وتوجيه FPGA | Kitploit
أدوات/GitHubGitHub/yosyshq/nextpnr
أمان الأنظمة المدمجةأمن الأجهزةالأوراق والأبحاثالتعلم والتعليمتحليل البرامج الثابتة
GitHubyosyshq/nextpnr

nextpnr

nextpnr أداة محمولة لتنسيب وتوجيه FPGA

عرض المستودع
1.7k33187منذ 2 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
nextpnr -- أداة تنسيب وتوجيه FPGA قابلة للنقل
===============================================

تطمح nextpnr إلى أن تكون أداة تنسيب وتوجيه FPGA حرة ومفتوحة المصدر (FOSS)، محايدة تجاه البائعين ومحركة بالتوقيت.

حاليًا تدعم nextpnr:
 * أجهزة Lattice iCE40 المدعومة عبر [Project IceStorm](https://github.com/YosysHQ/icestorm)
 * أجهزة Lattice ECP5 المدعومة عبر [Project Trellis](https://github.com/YosysHQ/prjtrellis)
 * أجهزة Lattice Nexus المدعومة عبر [Project Oxide](https://github.com/gatecat/prjoxide)
 * أجهزة Gowin LittleBee و Aurora V المدعومة عبر [Project Apicula](https://github.com/YosysHQ/apicula)
 * أجهزة NanoXplore NG-Ultra المدعومة عبر [Project Beyond](https://github.com/YosysHQ-GmbH/prjbeyond-db)
 * أجهزة Cologne Chip GateMate المدعومة عبر [Project Peppercorn](https://github.com/YosysHQ/prjpeppercorn)
 * *(تجريبي)* أجهزة Cyclone V المدعومة عبر [Mistral](https://github.com/Ravenslofty/mistral)
 * *(تجريبي)* أجهزة Lattice MachXO2 المدعومة عبر [Project Trellis](https://github.com/YosysHQ/prjtrellis)
 * *(تجريبي)* أجهزة Xilinx من السلسلة 7 المدعومة عبر [Project X-Ray](https://github.com/F4PGA/prjxray)
 * *(تجريبي)* نهاية خلفية "عامة" لبنى معمارية يحددها المستخدم

يمكن العثور على ورقة (أكاديمية) موجزة تصف مسار عمل Yosys+nextpnr على [arXiv](https://arxiv.org/abs/1903.10407).

فيما يلي لقطة شاشة من nextpnr لـ iCE40. يمكن العثور على تعليمات البناء و[ملاحظات البدء](#getting-started) أدناه.

<img src="https://assets.kitploit.com/production/public/readmes/10385/12bab50b683472060ad2a49530d9b6fe58b2c2b70efd1144b849ff83a8a6e80b.png" width="640"/>

انظر أيضًا:
- [الأسئلة الشائعة](https://github.com/yosyshq/nextpnr/blob/main/docs/faq.md)
- [واجهة برمجة تطبيقات البنية المعمارية](https://github.com/yosyshq/nextpnr/blob/main/docs/archapi.md)


المتطلبات الأساسية
-------------

يجب تثبيت الحزم التالية لبناء nextpnr، بغض النظر عن البنية المعمارية المحددة:

- CMake 3.25 أو أحدث
- مُترجم C++17 حديث (`clang-format` مطلوب للتطوير)
- Python 3.5 أو أحدث، بما في ذلك مكتبات التطوير (`python3-dev` لأوبونتو)
  - يتطلب `nextpnr-himbaechel` إصدار Python 3.9 أو أحدث
  - على ويندوز تأكد من تثبيت نفس الإصدار المدعوم من [vcpkg](https://github.com/Microsoft/vcpkg/blob/master/ports/python3/CONTROL)
- مكتبات 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 القابل للتضمين](https://www.python.org/downloads/release/python-364/) وفك ضغطه. قد تحتاج إلى فك ضغط `python36.zip` داخل ملف zip القابل للتضمين إلى دليل جديد يُسمى "Lib".
- للبناء على macOS، أداة brew مطلوبة.
  - ثبّت جميع الحزم المطلوبة `brew install cmake python boost eigen`

البدء
---------------

أولاً وقبل كل شيء، شغّل:

```
git submodule update --init --recursive
```

### nextpnr-ice40

لدعم iCE40، ثبّت [Project IceStorm](https://github.com/YosysHQ/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](https://github.com/YosysHQ/prjtrellis) في `/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](https://github.com/YosysHQ/prjtrellis/tree/main/examples).

### nextpnr-nexus

لدعم Nexus، ثبّت [Project Oxide](https://github.com/gatecat/prjoxide) في `$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](https://github.com/gatecat/prjoxide/tree/main/examples).

### nextpnr-mistral

لدعم Cyclone V، استنسخ [Mistral](https://github.com/Ravenslofty/mistral/tree/nextpnr-latest) إلى `$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](https://github.com/yosyshq/nextpnr/blob/main/generic/examples). انظر أيضًا إلى [وثائق البنية المعمارية العامة](https://github.com/yosyshq/nextpnr/blob/main/docs/generic.md).

### nextpnr-himbaechel

هدف himbaechel يتيح تشغيل التنسيب والتوجيه للبنى المعمارية الأكبر التي تشترك في بنية موحدة.

#### gowin

لدعم Gowin، ثبّت [Project Apicula](https://github.com/YosysHQ/apicula)

```
mkdir -p build && cd build
cmake .. -DARCH="himbaechel" -DHIMBAECHEL_UARCH="gowin"
make -j$(nproc)
sudo make install
```

 - يمكن العثور على أمثلة لمسار عمل Gowin لمجموعة من اللوحات في [أمثلة Project Apicula](https://github.com/YosysHQ/apicula/tree/master/examples).

#### ng-ultra

لدعم NanoXplore NG-Ultra، استنسخ مستودع [Project Beyond DB](https://github.com/yosyshq-GmbH/prjbeyond-db)

```
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
```

*يرجى ملاحظة أن إنشاء تدفق البت الثنائي يتطلب أداة Impulse من NanoXplore.*

#### gatemate

لدعم Cologne Chip GateMate، استنسخ [Project Peppercorn](https://github.com/YosysHQ/prjpeppercorn)

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

### الواجهة الرسومية

لا يتم بناء واجهة nextpnr الرسومية افتراضيًا، لتقليل عدد التبعيات للبناء القياسي بدون واجهة رسومية. لتمكينها، أضف `-DBUILD_GUI=ON` إلى سطر أوامر CMake وتأكد من توفر 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`.

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

لإنشاء كل البنى المعمارية المستقرة المتاحة، استخدم `-DARCH=all`. لتضمين البنى التجريبية (حاليًا nexus)، استخدم `-DARCH=all+alpha`.

### لكل بنية دقيقة Himbächel

لإنشاء ملف تنفيذي منفرد nextpnr-himbachel لكل من البنى الدقيقة المدعومة، استخدم `-DHIMBAECHEL_SPLIT`.

```
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/<microarchitecture>/` لتشغيلها. البناء المقسم يقلل حجم المخرجات الموزعة بشكل فردي (على الرغم من زيادة الحجم الإجمالي)، ويسمح بالتثبيت المشترك لمخرجات من إصدارات مختلفة.

البناء المتبادل
-----------------

بصرف النظر عن قواعد بيانات الشرائح، يتطلب nextpnr تجميع أداة `bba` لنظام البناء. يمكن تجميع هذه الأداة كمشروع منفصل:

```
cd bba
cmake .
make
```

سينشئ ذلك ملف `bba-export.cmake`. قدم المسار إلى هذا الملف عند البناء المتبادل لـ nextpnr باستخدام `-DBBA_IMPORT=/path/to/bba-export.cmake`.

ملاحظات إضافية حول بناء nextpnr
-------------------------------------

ما يلي يشغّل بناء تصحيح أخطاء لبنية iCE40 بدون واجهة رسومية، وبدون دعم Python، وبدون أداة التنسيب التحليلية HeAP، ومع دعم HX1K فقط:

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

لإنشاء إصدار بناء ثابت لبنية iCE40 استخدم ما يلي:

```
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`.
- انظر إلى الويكي للحصول على وثائق إضافية حول واجهة برمجة تطبيقات البنية المعمارية.

تسجيل مقطع فيديو
-----------------

- لحفظ تسجيل فيديو لعملية التنسيب والتوجيه، انقر على أيقونة التسجيل في شريط الأدوات واختر دليلاً فارغًا لتخزين ملفات التسجيل فيه وحدد الإطارات المطلوب تخطيها.
- ابدأ يدويًا جميع عمليات التنسيب والتوجيه (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 `valgrind --leak-check=yes --tool=memcheck ./nextpnr-ice40 --json ice40/blinky.json`
- لتشغيل الاختبارات مع تغطية الكود استخدم `-DBUILD_TESTS=ON -DCOVERAGE` وبعد `make` شغّل `make ice40-coverage`
- بعد ذلك افتح `ice40-coverage/index.html` في متصفحك لعرض تقرير التغطية
- لاحظ أن `lcov` مطلوب من أجل إنشاء التقارير

الروابط والمراجع
--------------------

### التركيب والمحاكاة وتحسين المنطق

- [Yosys](https://yosyshq.net/yosys/)
- [Icarus Verilog](http://iverilog.icarus.com/)
- [ABC](https://people.eecs.berkeley.edu/~alanmi/abc/)

### مشاريع توثيق تدفق البت (وأدوات) FPGA

- [Project IceStorm (Lattice iCE40)](https://github.com/YosysHQ/icestorm)
- [Project Trellis (Lattice ECP5)](https://yosyshq.github.io/prjtrellis-db/)
- [Project X-Ray (Xilinx 7-Series)](https://github.com/F4PGA/prjxray)
- [Project Chibi (Intel MAX-V)](https://github.com/rqou/project-chibi)

### مشاريع FPGA حرة ومفتوحة المصدر أخرى للتنسيب والتوجيه

- [Arachne PNR](https://github.com/cseed/arachne-pnr)
- [VPR/VTR](https://verilogtorouting.org/)
- [SymbiFlow](https://github.com/SymbiFlow/symbiflow-arch-defs)
تنزيل الأداة