1 |
408 |
julius |
Actel place and route environment
|
2 |
|
|
|
3 |
|
|
Backend flow post-synthesis through to programming file can be performed here.
|
4 |
|
|
|
5 |
|
|
The scripts are designed to run the Actel backend tools in batch/shell mode.
|
6 |
|
|
|
7 |
|
|
All make commands should be run in the run/ path.
|
8 |
|
|
|
9 |
|
|
Performing place and route:
|
10 |
|
|
|
11 |
|
|
If the settings in bin/Makefile are what is desired, then a simple
|
12 |
|
|
|
13 |
|
|
$ make all
|
14 |
|
|
|
15 |
|
|
will perform all steps from synthesis through to layout. The result will be the
|
16 |
|
|
.adb file located in the run/ path.
|
17 |
|
|
|
18 |
|
|
To alter the configuration (partially seen by running 'make print-config')
|
19 |
|
|
inspect bin/Makefile to see the various options. To see the script generated
|
20 |
|
|
which is passed to the Actel Designer, run
|
21 |
|
|
|
22 |
|
|
$ make create-compile-par.tcl
|
23 |
|
|
|
24 |
|
|
while also setting all variables as desired on the command line, and inspect
|
25 |
|
|
the resulting TCL file to ensure it is correct.
|
26 |
|
|
|
27 |
|
|
When running 'make all', the constraint SDC and PDC files will be automatically
|
28 |
|
|
generated by the script, and will be left in the run/ path.
|
29 |
|
|
|
30 |
|
|
Both PDC and SDC are dependent upon the defines in the RTL Verilog file
|
31 |
|
|
design_defines.v - to see what modules and options are set in design_defines.v
|
32 |
|
|
run:
|
33 |
|
|
|
34 |
|
|
$ make print-defines
|
35 |
|
|
|
36 |
|
|
Among the printed information will be which modules where enabled, and the PDC
|
37 |
|
|
and SDCs are generated based on this.
|
38 |
|
|
See the main Makefile, bin/Makefile, and the rule for $(SDC_FILE) to add or
|
39 |
|
|
modify timing rules.
|
40 |
|
|
|
41 |
|
|
To print the configuration of the makefile (targeted FPGA part and family, tool
|
42 |
|
|
settings, and board I/O bonfiguration) run:
|
43 |
|
|
|
44 |
|
|
$ make print-config
|
45 |
|
|
|
46 |
|
|
PDC files:
|
47 |
|
|
|
48 |
|
|
The physical constraints generation system may seem overly compilcated to begin
|
49 |
|
|
with, but is design to make it easy and simple to add additional board and
|
50 |
|
|
module support, switch the design between boards, or modify existing
|
51 |
|
|
configurations.
|
52 |
|
|
|
53 |
|
|
The physical constraints file generation starts with defining some variables
|
54 |
|
|
with pin numbers, corresponding to the actual FPGA pins, depending on the FPGA
|
55 |
|
|
board. At present, the only CPU board supported is the ORSoC CPU board pin out.
|
56 |
|
|
The variables assigned pin numbers are in the bin/orsoccpuboard.mkpins file.
|
57 |
|
|
This file is design to be included by other files, wishing to use the ORSoC CPU
|
58 |
|
|
board variables (pin numbers). The variables in the CPU board file are then
|
59 |
|
|
used by other files, namely files which define uses for expansion pins on the
|
60 |
|
|
CPU board. For example, the two headers, JP1 and JP6, and their associated
|
61 |
|
|
variables from the ORSoC CPU board .mkpins file are used in the
|
62 |
|
|
orsocexpboard.mkpins file. Support for other I/O boards could be added by
|
63 |
|
|
creating a new .mkpins file, and creating a list of new, appropriate variable
|
64 |
|
|
names corresponding to the pins from the CPU board (in the ORSoC CPU board's
|
65 |
|
|
case, the JP1 and JP6 header pin variables.)
|
66 |
|
|
|
67 |
|
|
Finally, the variables for each actual I/O in the design must be assigned
|
68 |
|
|
something. The .mkpinassigns do this. They tie together the CPU and any I/O
|
69 |
|
|
board variable assigns, making it simple and easy to assign the variables used
|
70 |
|
|
in the Makefile during PDC generation, to the variables created in the .mkpins
|
71 |
|
|
files. The three main parts, then, the CPU board .mkpins file, expansion board
|
72 |
|
|
.mkpins file, overall board .mkpinassigns file and Makefile PDC rule are the
|
73 |
|
|
components to generating a PDC.
|
74 |
|
|
|
75 |
|
|
Of course, a .mkpinassigns file can also simply contain raw pin numbers for
|
76 |
|
|
each I/O port pin, or include a single .mkpins file with just a single board
|
77 |
|
|
definition. The idea is it's highly modular and configurable before doing the
|
78 |
|
|
final define of each I/O port's signal.
|
79 |
|
|
|
80 |
|
|
Every possible I/O from the design has an entry in the $(PDC_FILE) rule of the
|
81 |
|
|
Actel backend PAR Makefile. Almost all are surrounded by if statements checking
|
82 |
|
|
for the corresponding module's inclusion in the design.
|
83 |
|
|
|
84 |
|
|
Set the overall I/O config .mkpinassigns file by setting BOARD_CONFIG at make
|
85 |
|
|
time. The default is orsoccpuexpio.mkpinassigns. All these files should reside
|
86 |
|
|
in the bin/ path.
|
87 |
|
|
|
88 |
|
|
$ make all BOARD_CONFIG=mynew.mkpinassigns
|
89 |
|
|
|
90 |
|
|
To test the generated PDC file, do
|
91 |
|
|
|
92 |
|
|
$ make pdc_file BOARD_CONFIG=mynew.mkpinassigns
|
93 |
|
|
|