diff options
author | David Shah <dave@ds0.me> | 2018-12-14 13:41:28 +0000 |
---|---|---|
committer | David Shah <dave@ds0.me> | 2019-03-22 10:31:54 +0000 |
commit | 1780f42b9a7854a8a7bf1f2d6589d3d35f133f87 (patch) | |
tree | 2e668d93ac8b58b908ef32667f689b5a5718af60 /ice40/examples/floorplan | |
parent | 0118ac00c45c725a42b16697d1ac975f1be6f3b9 (diff) | |
download | nextpnr-1780f42b9a7854a8a7bf1f2d6589d3d35f133f87.tar.gz nextpnr-1780f42b9a7854a8a7bf1f2d6589d3d35f133f87.tar.bz2 nextpnr-1780f42b9a7854a8a7bf1f2d6589d3d35f133f87.zip |
ice40: Add examples folder including floorplan example
Signed-off-by: David Shah <dave@ds0.me>
Diffstat (limited to 'ice40/examples/floorplan')
-rw-r--r-- | ice40/examples/floorplan/.gitignore | 4 | ||||
-rw-r--r-- | ice40/examples/floorplan/floorplan.py | 5 | ||||
-rwxr-xr-x | ice40/examples/floorplan/floorplan.sh | 6 | ||||
-rw-r--r-- | ice40/examples/floorplan/floorplan.v | 22 | ||||
-rw-r--r-- | ice40/examples/floorplan/icebreaker.pcf | 5 |
5 files changed, 42 insertions, 0 deletions
diff --git a/ice40/examples/floorplan/.gitignore b/ice40/examples/floorplan/.gitignore new file mode 100644 index 00000000..d93659be --- /dev/null +++ b/ice40/examples/floorplan/.gitignore @@ -0,0 +1,4 @@ +*.json +*.asc +*.bin +__pycache__
\ No newline at end of file diff --git a/ice40/examples/floorplan/floorplan.py b/ice40/examples/floorplan/floorplan.py new file mode 100644 index 00000000..85c53ccd --- /dev/null +++ b/ice40/examples/floorplan/floorplan.py @@ -0,0 +1,5 @@ +ctx.createRectangularRegion("osc", 1, 1, 1, 4) +for cell, cellinfo in ctx.cells: + if "ringosc" in cellinfo.attrs: + print("Floorplanned cell %s" % cell) + ctx.constrainCellToRegion(cell, "osc") diff --git a/ice40/examples/floorplan/floorplan.sh b/ice40/examples/floorplan/floorplan.sh new file mode 100755 index 00000000..e0ed7a64 --- /dev/null +++ b/ice40/examples/floorplan/floorplan.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -ex +yosys -p "synth_ice40 -top top -json floorplan.json" floorplan.v +../../../nextpnr-ice40 --up5k --json floorplan.json --pcf icebreaker.pcf --asc floorplan.asc --ignore-loops --pre-place floorplan.py +icepack floorplan.asc floorplan.bin +iceprog floorplan.bin diff --git a/ice40/examples/floorplan/floorplan.v b/ice40/examples/floorplan/floorplan.v new file mode 100644 index 00000000..8f99ed4e --- /dev/null +++ b/ice40/examples/floorplan/floorplan.v @@ -0,0 +1,22 @@ +module top(output LED1, LED2, LED3, LED4, LED5); + localparam N = 31; + wire [N:0] x; + assign x[0] = x[N]; + + genvar ii; + generate + + for (ii = 0; ii < N; ii = ii + 1) begin + (* ringosc *) + SB_LUT4 #(.LUT_INIT(1)) lut_i(.I0(x[ii]), .I1(), .I2(), .I3(), .O(x[ii+1])); + end + endgenerate + + assign clk = x[N]; + + + reg [19:0] ctr; + always @(posedge clk) + ctr <= ctr + 1'b1; + assign {LED5, LED4, LED3, LED2, LED1} = ctr[19:15]; +endmodule diff --git a/ice40/examples/floorplan/icebreaker.pcf b/ice40/examples/floorplan/icebreaker.pcf new file mode 100644 index 00000000..ac7ebf9e --- /dev/null +++ b/ice40/examples/floorplan/icebreaker.pcf @@ -0,0 +1,5 @@ +set_io -nowarn LED1 26 +set_io -nowarn LED2 27 +set_io -nowarn LED3 25 +set_io -nowarn LED4 23 +set_io -nowarn LED5 21 |