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