docs: Add documentation on constraints support
Signed-off-by: David Shah <dave@ds0.me>
This commit is contained in:
parent
e1d2c595a1
commit
9f9b242cf0
37
docs/constraints.md
Normal file
37
docs/constraints.md
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# Constraints
|
||||||
|
|
||||||
|
There are three types of constraints available for end users of nextpnr.
|
||||||
|
|
||||||
|
## Architecture-specific IO Cconstraints
|
||||||
|
|
||||||
|
Architectures may provide support for their native (or any other) IO constraint format.
|
||||||
|
The iCE40 architecture supports PCF constraints thus:
|
||||||
|
|
||||||
|
set_io led[0] 3
|
||||||
|
|
||||||
|
and the ECP5 architecture supports a subset of LPF constraints:
|
||||||
|
|
||||||
|
LOCATE COMP "led[0]" SITE "E16";
|
||||||
|
IOBUF PORT "led[0]" IO_TYPE=LVCMOS25;
|
||||||
|
|
||||||
|
|
||||||
|
## Absolute Placement Constraints
|
||||||
|
|
||||||
|
nextpnr provides generic support for placement constraints by setting the Bel attribute on the cell to the name of
|
||||||
|
the Bel you wish it to be placed at. For example:
|
||||||
|
|
||||||
|
(* BEL="X2/Y5/lc0" *)
|
||||||
|
|
||||||
|
## Clock Constraints
|
||||||
|
|
||||||
|
There are two ways to apply clock constraints in nextpnr. The `--clock {freq}` command line argument is used to
|
||||||
|
apply a default frequency (in MHz) to all clocks without a more specific constraint.
|
||||||
|
|
||||||
|
The Python API can apply clock constraints to specific named clocks. This is done by passing a Python file
|
||||||
|
specifying these constraints to the `--pre-pack` command line argument. Inside the file, constraints are applied by
|
||||||
|
calling the function `ctx.addClock` with the name of the clock and its frequency in MHz, for example:
|
||||||
|
|
||||||
|
ctx.addClock("csi_rx_i.dphy_clk", 96)
|
||||||
|
ctx.addClock("video_clk", 24)
|
||||||
|
ctx.addClock("uart_i.sys_clk_i", 12)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user