@silinx/nextpnr-himbaechel-xc7 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +56 -2
- package/chipdb/chipdb-xc7a100t.bin.gz +0 -0
- package/chipdb/chipdb-xc7a50t.bin.gz +0 -0
- package/gen/bundle.js +10699 -0
- package/gen/nextpnr-himbaechel-xilinx-resources.0.tar +0 -0
- package/gen/nextpnr-himbaechel-xilinx.core.wasm +0 -0
- package/gen/nextpnr-himbaechel-xilinx.core2.wasm +0 -0
- package/gen/nextpnr-himbaechel-xilinx.core3.wasm +0 -0
- package/gen/nextpnr-himbaechel-xilinx.core4.wasm +0 -0
- package/lib/api.d.ts +101 -0
- package/package.json +31 -4
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Changelog of @silinx/nextpnr-himbaechel-xc7
|
|
2
|
+
|
|
3
|
+
Each version is the fork's tag `xc7-v<version>`, its GitHub release (the package and the chip databases) and its npm
|
|
4
|
+
package. A version's changes are written here before it is tagged. Before 1.0.0 a minor version may change the interface
|
|
5
|
+
the [README](README.md) describes.
|
|
6
|
+
|
|
7
|
+
## 0.1.0
|
|
8
|
+
|
|
9
|
+
The first version (pmnmalo/Silinx#3143, after the spike of pmnmalo/Silinx#2305): nextpnr-himbaechel's `xilinx`
|
|
10
|
+
micro-architecture (the 7-series, on Project X-Ray's database) in WebAssembly, as the Spartan-3E's package is built.
|
|
11
|
+
- The chip databases of the xc7a50t (which the xc7a35t takes) and the xc7a100t, gzipped, from prjxray-db
|
|
12
|
+
0a0addedd73e7e4139d52a6d8db4258763e0f1f3 (`PRJXRAY_DB_REF` of `.github/workflows/xilinx.yml`).
|
|
13
|
+
- The carry chains packed as Vivado packs them, feed-through LUTs only where the site needs one (pmnmalo/Silinx#3160).
|
|
14
|
+
- Tested in Node and in headless Chromium on Silinx's blinky, vga and micro80 on the xc7a35tcpg236-1 with router 1, with
|
|
15
|
+
the native build's checks (`tests/expected.txt`): the feed-through LUTs and LUT cells, the LUTs as Vivado counts them
|
|
16
|
+
at most 15 % over Vivado's, no warning, the maximum frequency equal to the native build's.
|
package/README.md
CHANGED
|
@@ -1,3 +1,57 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @silinx/nextpnr-himbaechel-xc7
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
nextpnr-himbaechel with the Xilinx 7-series micro-architecture (`xilinx`, on Project X-Ray's database), in WebAssembly,
|
|
4
|
+
run by YoWASP's runtime (`@yowasp/runtime`), in Node and in browsers. It places and routes the 7-series designs of
|
|
5
|
+
[Silinx ISE](https://github.com/pmnmalo/Silinx-ISE) and writes their FASM, which Project X-Ray's tools turn into a
|
|
6
|
+
bitstream. Its source is the fork [pmnmalo/nextpnr-spartan](https://github.com/pmnmalo/nextpnr-spartan) (branch
|
|
7
|
+
`silinx`, `himbaechel/uarch/xilinx/`; `ci/build-wasm.sh` builds it), with the carry chains packed as Vivado packs them
|
|
8
|
+
(pmnmalo/Silinx#3160).
|
|
9
|
+
|
|
10
|
+
Devices (the chip databases):
|
|
11
|
+
- **xc7a50t**, which the **xc7a35t** takes too (its fabric in Project X-Ray's database): the Digilent Basys 3 and the Arty
|
|
12
|
+
A7-35. nextpnr does not limit a 35t to its own 5,200 slices: it may use the 50t's 8,150;
|
|
13
|
+
- **xc7a100t**: the Digilent Nexys A7-100T and the Arty A7-100.
|
|
14
|
+
|
|
15
|
+
```js
|
|
16
|
+
import { runNextpnrHimbaechelXilinx, chipdb, Exit } from '@silinx/nextpnr-himbaechel-xc7';
|
|
17
|
+
|
|
18
|
+
const part = 'xc7a35tcpg236-1';
|
|
19
|
+
const files = await runNextpnrHimbaechelXilinx(
|
|
20
|
+
['--device', part, '--chipdb', 'chipdb.bin', '--json', 'design.json', '-o', 'xdc=design.xdc', '-o', 'fasm=design.fasm',
|
|
21
|
+
'--write', 'routed.json', '--router', 'router1', '--seed', '1'],
|
|
22
|
+
{ 'chipdb.bin': await chipdb(part), 'design.json': netlist, 'design.xdc': xdc },
|
|
23
|
+
{ stdout: bytes => {}, stderr: bytes => {} });
|
|
24
|
+
const fasm = files['design.fasm'];
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## The interface
|
|
28
|
+
|
|
29
|
+
- **The module** (`lib/api.d.ts`, documented there): `runNextpnrHimbaechelXilinx`, `commands`, `Exit`, `version`,
|
|
30
|
+
`devices`, `deviceOf(part)`, `chipdbUrl(part)` and `chipdb(part)`, and the types `Tree`, `RunOptions`, `InputStream`,
|
|
31
|
+
`OutputStream`, `ProgressCallback`, `Command`, `Application` (types only).
|
|
32
|
+
- **The chip databases:** one file per device, `chipdb/chipdb-<device>.bin.gz` in the package (`<device>`: `xc7a50t`,
|
|
33
|
+
`xc7a100t`), and the same files as assets of the fork's GitHub release `xc7-v<version>`. `chipdb(part)` reads or
|
|
34
|
+
fetches the one `deviceOf(part)` names and decompresses it; it works with the nextpnr of the same package version only.
|
|
35
|
+
- **The command:** nextpnr-himbaechel's arguments, among them:
|
|
36
|
+
|
|
37
|
+
| argument | |
|
|
38
|
+
|---|---|
|
|
39
|
+
| `--device <part>` | the part, with its package and speed grade: `xc7a35tcpg236-1`, `xc7a100tcsg324-1` |
|
|
40
|
+
| `--chipdb <file>` | the device's chip database, `chipdb(part)`'s bytes |
|
|
41
|
+
| `--json <file>` | the netlist: Yosys's JSON of `synth_xilinx` (the 7-series' primitives) |
|
|
42
|
+
| `-o xdc=<file>` | the constraints: the ports' `PACKAGE_PIN` and `IOSTANDARD`, the clocks' `create_clock` |
|
|
43
|
+
| `-o fasm=<file>` | the FASM written, for Project X-Ray's `fasm2frames` and `xc7frames2bit` |
|
|
44
|
+
| `--write <file>` | the routed design (nextpnr's JSON) |
|
|
45
|
+
| `--router router1` / `router2` | router 1 takes about 0.4-0.5 GB in WebAssembly, router 2 1.1 GB on the xc7a35t and 1.85 GB on the xc7a100t but is 6 to 30 times faster |
|
|
46
|
+
| `--seed <n>`, `--freq <MHz>`, `--timing-allow-fail` | as nextpnr's |
|
|
47
|
+
|
|
48
|
+
## Stability
|
|
49
|
+
|
|
50
|
+
Before 1.0.0 a minor version (0.2.0) may change the interface above; a patch (0.1.1) is a fix that changes neither the
|
|
51
|
+
interface nor, except for the fix, the results. Silinx pins an exact version. The changes of each version:
|
|
52
|
+
[CHANGELOG.md](CHANGELOG.md).
|
|
53
|
+
|
|
54
|
+
## Licence
|
|
55
|
+
|
|
56
|
+
nextpnr's licence, ISC (the fork's `COPYING`). The chip databases are built from Project X-Ray's database
|
|
57
|
+
(f4pga/prjxray-db) and nextpnr-xilinx-meta (gatecat), both CC0.
|
|
Binary file
|
|
Binary file
|