Commit Graph

274 Commits (b03fac4b37ca8aa929be1c630435ff3d6af84e9f)

Author SHA1 Message Date
sergiu arpadi acbbd4636a sysid: Upgrade framework, header/ip are now at 2/1.1.a
Unify tcl scripts; rename adi_pd_intel.tcl to adi_pd.tcl
add git branch to internal use area; update log prints;
update xilixn projects; fix cn0506 sysid script;
2021-01-20 01:02:56 +02:00
Istvan Csomortani 9ec3408c79 adi_project_xilinx: Fix the adi_project process
In most of the standalone projects the generic project creation flow is not followed. The project's device
is defined manualy. This fix makes sure that those projects still builds without an issue.

NOTE: In these case we should use adi_project_create directly in system_project.tcl.
2021-01-15 15:26:43 +02:00
Sergiu Arpadi b9ac8df503 project-xilinx.mk: Add *.hbs to clean list 2021-01-15 13:50:53 +02:00
Sergiu Arpadi c54552d823 adi_project_xilinx: Add env var
add ADI_DISABLE_MESSAGE_SUPPRESION which disables
adi_xilinx_msg.tcl

projects/scripts/adi_project_xilinx.tcl
2021-01-15 13:50:53 +02:00
Sergiu Arpadi ead4513ad6 adi_xilinx_msg: Downgrade Synth 8-2490 2021-01-15 13:50:53 +02:00
Arpadi 51b5e4f58b tcl: Change Vivado version to 2020.1
handoff is now exported as .xsa
2021-01-15 13:50:53 +02:00
aholtzma bab3426f91 scripts: allow directly specifying a device when creating a project
Add a layer under adi_project that allows you to directly specify a device/board combination without determining it from the project name.
2021-01-12 14:13:07 +02:00
Istvan Csomortani d6b23d5149 scripts/adi_pd_intel: Delete noisy print outs 2020-10-17 08:02:33 +03:00
Sergiu Arpadi c656a2e29b sysid: Initialize parameter 2020-09-30 19:12:24 +03:00
Istvan Csomortani 5644907f75 adi_intel_msg: Dissable "unused TX/RX channel" critical warning for Stratix 10 2020-09-25 12:56:14 +03:00
sergiu arpadi f2f6422751 sysid: Fix board/project name underscore issue 2020-09-17 10:32:58 +03:00
Stanca Pop 6cea8ce777 adi_project_intel: Add de10nano support 2020-09-15 18:14:23 +03:00
Sergiu Arpadi f57643b451 sysid_intel: Added adi_pd_intel.tcl 2020-09-11 15:46:06 +03:00
Istvan Csomortani 2b5136db98 scripts/project_intel.mk: Update CLEAN targets 2020-09-09 14:15:37 +03:00
Istvan Csomortani f9c4283f45 stratix10soc: Initial commit of base design
Note: Currently we have a engineering sample version 2 board.
2020-09-09 14:15:37 +03:00
Istvan Csomortani eb2f211d30 scripts/intel: Add message severity definition file 2020-08-25 14:46:52 +03:00
Istvan Csomortani fa0b39fa20 adi_project_intel: Update QSYS generation
In Quartus Prime in place of the set_domain_assignment command, the
set_interconnect_requirement command is used.
2020-08-17 12:02:49 +03:00
Istvan Csomortani f3b69c15c9 scripts/intel: Update version check 2020-08-12 10:33:29 +03:00
Istvan Csomortani 218f45a0df scripts/intel: Set supported Quartus version to 19.3 2020-08-12 10:33:29 +03:00
Istvan Csomortani 5ba3448987 scripts/project-intel: Update CLEAN target 2020-08-11 10:14:18 +03:00
Istvan Csomortani 8fd1ad64d6 quartus: Increase tool version to 19.2 2020-08-11 10:14:18 +03:00
Istvan Csomortani f3142a6a7a adi_project_intel: set_interconnect_requirment command is deprecated
Use set_domain_assignment to set up the maximum pipeline stages for the
main interconnect.
2020-08-11 10:14:18 +03:00
Istvan Csomortani 967a138d0f adi_project_intel: Add support for Quartus Pro
By defualt the supported tool chain is Quartus PRO. If you want to
build the project with Quartus Standard, you need to define an environment
variable called QUARTUS_PRO_ISUSED with the value 0. (e.g. export
QUARTUS_PRO_ISUSED=0 )

Note: Not all projects going to build on Quartus Standard, you should
fix the errors if there is any.
2020-08-11 10:14:18 +03:00
Istvan Csomortani 054193e083 adi_project_intel: Delete all MESSAGE_DISABLE assignment
These kind of assignments should be placed into file like
~/projects/scripts/adi_xilinx_msg.tcl
2020-08-11 10:14:18 +03:00
Istvan Csomortani 4ca1311d57 quartus_pro: Global assignment ENABLE_ADVANCED_IO_TIMING is not supported 2020-08-11 10:14:18 +03:00
Laszlo Nagy 9c8190f709 adi_project_xilinx.tcl: discover all timing failures
Look for an overall indicator of timing failure.
Create critical warning if timing is failed.
2020-05-26 14:47:38 +03:00
Laszlo Nagy db6af63583 scripts/adi_env.tcl: print in logs system variables are used 2020-05-20 19:07:23 +03:00
Istvan Csomortani 6535e5b2ba scripts/xilinx: Version mismatch is upgraded to ERROR
There is a major compatibility issue between 2019.1 and 2019.2.

The file system_top.hdf got a different file extention. This will
cause a compilation failer in the end of the build. To save time
and fail earlier, upgrade the version mismatch message to ERROR.

If user still wants to build a branch with different tool version
the variable ADI_IGNORE_VERSION_CHECK should be set to 1.
2020-05-15 12:16:35 +03:00
Laszlo Nagy 1f7671cb36 scripts/adi_env.tcl: helper function for environment variables
Ease the access of the environment variables.
2020-03-10 18:19:03 +02:00
Sergiu Arpadi 3192807f22 adi_project_xilinx: Fixed variable name 2020-02-14 11:22:46 +02:00
Sergiu Arpadi c5e03eb196 adi_project_xilinx: Added power analysis procedure 2020-02-14 11:22:46 +02:00
sraus 78a1e54a33 adi_project_xilinx.tcl: Generate resource utilization for IPs 2020-02-13 11:33:02 +02:00
Sergiu Arpadi 135538b521 adi_project: Fixed kcu105 board file selection 2020-01-16 17:16:58 +02:00
Sergiu Arpadi e773b22087 adi_project: Updated board files version selection
vivado will automatically select the latest version for a given board
2020-01-14 17:16:01 +02:00
Arpadi d86fbb2a08 adi_board: fixed ddr memory mapping for microblaze projects 2020-01-13 12:25:23 +02:00
Istvan Csomortani 34ea5efdff adi_project_xilinx: Use the latest board files 2020-01-13 12:25:23 +02:00
Istvan Csomortani adfeb435a4 scripts: Update Vivado version to 2019.1 2020-01-13 12:25:23 +02:00
Laszlo Nagy 82021edffe adi_board.tcl:ad_xcvrcon: do not reorder common control
When channels are not swapped in groups of four but are completely out of order
the common control channel can't be reordered based on the index of the
channel.
2019-11-30 12:29:32 +02:00
Adrian Costina 8c39cf8560 scripts: adi_board.tcl: Update the axi_adxcvr to util_adxcvr connections 2019-11-26 12:57:53 +02:00
Stanca Pop 40d839df5f coraz7s: Initial commit 2019-11-15 14:35:00 +02:00
Stefan Raus fd4d32c408 projects/scripts/*xilinx*: Generate report utilization extra files
Add commands to generate one extra file with resource utilization, in CSV format.
New commands executes only if ADI_GENERATE_UTILIZATION env variable is set.
2019-10-18 13:42:34 +03:00
Istvan Csomortani af94487f57 adi_project_intel: Enable HPS internal timing
It's recommended to use this global assignment so the tool can make a
more in-depth timing analysis.
2019-10-02 15:32:17 +03:00
Istvan Csomortani 75d263afc5 adi_project_xilinx: Add constraint files to constr_1 file set 2019-09-27 18:21:25 +03:00
Istvan Csomortani b174333fa2 project-xilinx.mk: Clean generated file by sysid 2019-09-27 13:16:19 +03:00
sarpadi 442b38033a sys_id: added catch to git status check
made error checking more general
2019-09-26 16:26:02 +03:00
AndreiGrozav 5e08e2d548 project-xilinx.mk: Fix build condition
"prepare_incremental_compile" is defined as a phony target, but is also a
prerequisite of a real target. This will lead to a complete project build
every time make is called.
To fix the issue the functionality of prepare_incremental_compile target
was included in the generic project build target.
2019-09-12 13:23:09 +03:00
AndreiGrozav 36a1767329 Add generic fir filters processes for RF projects 2019-08-20 16:24:47 +03:00
Sergiu Arpadi 4fe5f007cb system_id: added axi_sysid ip core and tcl 2019-08-06 16:53:11 +03:00
István Csomortáni 14a4acfd0e
projects/scripts: Fix a typo in adi_env.tcl 2019-07-25 17:58:36 +03:00
Istvan Csomortani fa610d36c6 ad_ghdl_dir: Fix global variable name
In #PR318 the global variable $ad_phdl_dir name were changed to
$ad_ghdl_dir.
2019-07-23 10:29:37 +01:00
Istvan Csomortani 6a721c0bf0 adi_env: Update system level environment variable definition
Our internal repository was changed from phdl to ghdl. Update the
adi_env.tcl scripts and other scripts, which depends on the $ad_ghdl_dir
variable. This way the tools will see all the internal IPs too.
2019-07-22 11:00:45 +03:00
Istvan Csomortani e1d9a36ae0 scripts/adi_project_intel: Rename ALT_NIOS_MMU_ENABLED to NIOS_MMU_ENABLED 2019-06-29 06:53:51 +03:00
Istvan Csomortani 363494ab9c library/scripts: Rename adi_ip.tcl to adi_ip_xilinx.tcl 2019-06-29 06:53:51 +03:00
Istvan Csomortani 6e6f1347d7 project/scripts: Rename adi_project_alt.tcl to adi_project_intel.tcl 2019-06-29 06:53:51 +03:00
Istvan Csomortani a589753d92 project/scripts: Rename adi_project.tcl to adi_project_xilinx.tcl 2019-06-29 06:53:51 +03:00
Istvan Csomortani 43725429ac adi_project: Rename the process adi_project_xilinx to adi_project 2019-06-29 06:53:51 +03:00
Istvan Csomortani ec67a381e4 adi_project: Rename the process adi_project_altera to adi_project 2019-06-29 06:53:51 +03:00
Istvan Csomortani 79b6ba29ce all: Rename altera to intel 2019-06-29 06:53:51 +03:00
Istvan Csomortani 993497438b adi_project:adi_project_run: Check if $num_reg exist 2019-06-11 18:13:06 +03:00
Istvan Csomortani 896ea4925d adi_board: Fix ad_mem_hpx_interconnect proc
Make the lsearch command more robust.
2019-06-11 18:13:06 +03:00
Istvan Csomortani 20c714eccf common: Define three global clock nets
For all the Xilinx base design, define three global clock nets, which
are saved in the following three global variable: $sys_cpu_clk, $sys_dma_clk
and $sys_iodelay_clk.

These clock nets are connected to different clock sources depending of
the FPGA architecture used on the carrier. In general the following
frequencies are used:

  - sys_cpu_clk     - 100MHz
  - sys_dma_clk     - 200MHz or 250Mhz
  - sys_iodelay_clk - 200MHz or 500Mhz
2019-06-11 18:13:06 +03:00
Istvan Csomortani a7e3fcf26a adi_project_alt.tcl: Add comments to all proc 2019-05-31 10:32:40 +03:00
Istvan Csomortani 41bc947ac1 adi_project.tcl: Add comments to all proc 2019-05-31 10:32:40 +03:00
Istvan Csomortani 21031261b0 adi_board.tcl: Add comments to all proc 2019-05-31 10:32:40 +03:00
Istvan Csomortani e9a171df5f adi_board: Delete ad_reconct deprecated proc 2019-05-29 10:27:16 +03:00
Istvan Csomortani 3adefaddfd adi_xilinx_msg: New updates for 2018.3 2019-05-27 16:58:34 +03:00
Laszlo Nagy ab7ab3b32f scripts/adi_project.tcl: make search for undefined clocks more robust
Since we parse the output of a command it is likely to break in the
future if the format of the sting changes. Create a warning for that case.
2019-05-24 13:38:01 +03:00
Laszlo Nagy bf31f949e6 scripts/adi_project:adi_project_alt: add parameters to top level
Allow the top level files to have parameters.
Pass the parameters from system_project.tcl to the Vivado/Quartus project and
to the block design scripts through ad_project_params variable.

Usage:

1. create a project with a list of parameters:

adi_project_xilinx  my_project [list PARAM_A PARAM_A_VALUE PARAM_B PARAM_B_VALUE]
or
adi_project_altera  my_project [list PARAM_A PARAM_A_VALUE PARAM_B PARAM_B_VALUE]

2. access the parameter in QSYS or block design through the $ad_project_params variable

e.g
  set PARAM_A $ad_project_params(PARAM_A)
  set PARAM_B $ad_project_params(PARAM_B)

3. In system_top.v use PARAM_A and PARAM_B as parameters/generics
2019-05-24 11:05:10 +03:00
Laszlo Nagy ec636b785a scripts:adi_project.tcl: add check for missing clock definitions
Look for undefined clocks which do not show up in the timing summary
therefore can lead to silent failures.
If clocks are not defined they are not analyzed during the timing
checks.
2019-05-16 14:55:35 +03:00
Sergiu Arpadi 7ae2bc6285 adi_project: used report_timing_summary to evaluate timing 2019-05-09 12:27:35 +03:00
Sergiu Arpadi 17c20eeb7a adi_project: Fix timing check
Fixed timing paths evaluation where there is no logic in PL.
2019-05-09 12:27:35 +03:00
Laszlo Nagy 2c2be2f38a scripts: patch incremental compile
Clear the reference checkpoint if the incremental compilation is not
selected through the make option. Other case the scripts will silently
use the reference.dcp checkpoint if that exists.
2019-04-23 18:07:55 +03:00
Laszlo Nagy 525c068993 scripts: Support for incremental compilation
The scripts are looking for a previous run result, a routed design
checkpoint to use it as a reference during the incremental build flow.
Before clearing the project files, the scrips will save the reference dcp
file in the project folder.
If the reference dcp does not exists the build continues normally.

Proposed workflow:
  1. Build your project normally with 'make' or place manually a
  reference.dcp file in the Vivado project folder.
  2. Do some minor modifications
  3. Run the make with the following option:
    make MODE=incr
  4. Repeat steps 2-3
2019-04-22 10:27:16 +03:00
Laszlo Nagy 5dd9cdcdea scripts: Add common IP cache location for OOC mode
Using a common IP cache location for all the project will speed up
compile time of common blocks used in base designs. Example a MicroBlaze
core for VCU118 once compiled it will be reused on other projects.

Using a common IP cache will speed up re-compiles of every project in OOC
mode since the cache won't be cleared as with normal compile flow.
2019-04-22 10:27:16 +03:00
Laszlo Nagy 5e92dc45b2 scripts: add support for OOC synthesis flow
Usage:
from command line set any value to the ADI_USE_OOC_SYNTHESIS variable
e.g. export ADI_USE_OOC_SYNTHESIS=y
2019-04-22 10:27:16 +03:00
Adrian Costina dc5f90098e vcu118: Initial commit for common files 2019-04-17 14:24:35 +03:00
Adrian Costina 77cc0ce8ba scripts: adi_board.tcl, move from memory interconnect to smartconnect 2019-04-15 17:49:11 +03:00
AndreiGrozav e1f0b301d3 Tools version upgrade
Vivado 2018.2 -> Vivado 2018.3
Quartus 18.0  -> Quartus 18.1
2019-04-12 10:48:50 +03:00
Laszlo Nagy 8885caab13 scripts/adi_board.tcl: fix HP address mappings for ZynqMP
In the current form, when connecting a master to the HP ports all
available slave address spaces are mapped to the master (DDR_*, PCIE*, OCM,
QSPI)

Let the PL masters have access only to the DDR_LOW and DDR_HIGH address
spaces to avoid unnecessary resource usage and increase timing margin.
2019-02-27 15:04:41 +02:00
AndreiGrozav f5af939c04 Add adi make(build) scripts
adi_make.tcl
  -adi_make::lib
  -adi_make::boot_bin (executes the script adi_make_boot_bin in xsct)
adi_make_boot_bin.tcl
2018-12-11 14:02:11 +02:00
Istvan Csomortani 2b868c2857 adi_project.tcl: Update the ZCU102 board preset version 2018-10-03 15:54:29 +03:00
Lars-Peter Clausen 97409dcb88 adi_board.tcl: ad_xcvrcon: Fix width of sync port for multi-link setups
Each individual link of a multi-link has its own sync signal. The top level
sync port that is created by the ad_xcvrcon function is always a single bit
single though.

This results in only the sync signal of the first link being routed while
others are ignored.

To fix this make sure that for multi-link setups the sync port is a vector
port with the width equal to the number of links.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-09-10 13:46:38 +02:00
Istvan Csomortani 302ec5d68a adi_project_alt: Update Quartus version to 18.0.0 2018-08-23 18:41:48 +03:00
Istvan Csomortani b748488377 adi_board/adi_ip: Update Vivado version to 2018.2 2018-08-23 18:41:48 +03:00
Lars-Peter Clausen 5b94533cd0 adi_board.tcl: ad_ip_instance: Add support for specifying IP parameters
Add support for specifying a set of parameter value pairs when
instantiating an IP core to the ad_ip_instance command. This has the
convenience of not having to repeatedly call ad_ip_parameter with the name
of the core that got just created for each parameter that needs to be set.

It is also useful for cases where some parameters have mutually exclusive
values and both (or more) have to be set at the same time.

This also slightly speeds things up. Whenever a parameter is changed the
core needs to be updated and post configuration scripts might run. When
setting all parameters at the same time this only happens once instead of
once for each parameter.

For example the following sequence

  ad_ip_instance axi_dmac axi_ad9136_dma
  ad_ip_parameter axi_ad9136_dma CONFIG.DMA_TYPE_SRC 0
  ad_ip_parameter axi_ad9136_dma CONFIG.DMA_TYPE_DEST 1
  ad_ip_parameter axi_ad9136_dma CONFIG.DMA_DATA_WIDTH_SRC 64
  ad_ip_parameter axi_ad9136_dma CONFIG.DMA_DATA_WIDTH_DEST 256

can now be replaced with

  ad_ip_instance axi_dmac axi_ad9136_dma [list \
    DMA_TYPE_SRC 0 \
    DMA_TYPE_DEST 1 \
    DMA_DATA_WIDTH_SRC 64 \
    DMA_DATA_WIDTH_DEST 256 \
  ]

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-08-10 16:12:26 +02:00
AndreiGrozav ebae8bf8c1 Remove interrupts from system_top for all xilinx projects
- remove interrupts from system_top
- for all suported carriers:
	- remove all interrupt bd pins
	- connect to GND all initial unconnected interrupt pins
- update ad_cpu_interrupt procedure to disconnect a interrupt from GND
before connectiong it to another pin.
2018-08-10 10:10:58 +03:00
Istvan Csomortani e97d707f24 adi_tquest: Improve the timing report generation
If the analysis type is not defined the report_timing command will run
just a setup analysis.

Run an analysis report for all the four analysis type.
2018-08-08 15:09:19 +03:00
AndreiGrozav 22ac59c4cf scripts/adi_project.tcl: Overrides the default individual msg limit to 2000 2018-08-06 18:18:13 +03:00
Istvan Csomortani 1388554faa adi_board.tcl: Update the VCC/GND instance generation
Just one VCC or GND xlconstant will be generated for each width. This
way we can avoid having a lot of xlconstant instances with the same
configuration.
2018-08-06 10:14:14 +03:00
Lars-Peter Clausen 9b01b9f37c adi_board.tcl: ad_xcvrcon: Add support for sparse PHY to link connections
Some FMC boards do utilize more than one transceiver quad but do not
necessarily use all transceivers in a quad. On such board is the
AD9694-500EBZ. Which uses two transceivers each in two adjacent quads.

This board can not be supported by instantiating a util_adxcvr with only 4
lanes. Since those 4 lanes would be packed into the same quad. Instead it
it is necessary to instantiate a util_adxcvr with 6 lanes. 4 lanes for the
first quad and 2 for the second.

To still to be able to connect such a util_adxcvr to a link layer with only
4 lanes allow to specify sparse lane mappings. A sparse mapping can have
less lanes than the util_adxcvr and some lanes will be left unconnected.

For example for the AD9694-500EBZ the lane mapping looks like the following:

  ad_xcvrcon util_ad9694_xcvr axi_ad9694_xcvr ad9694_jesd {0 1 4 5} rx_device_clk

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-07-18 10:36:26 +02:00
Lars-Peter Clausen 2f002bab5c adi_board.tcl: ad_xcvrcon: Add option to specify device clock
Sometimes the output clock of the transceiver should not be used for the
device clock.

E.g. for deterministic latency with no uncertainty the device clock needs
to be sourced directly from a clock or transceiver reference clock input
pin.

Add an option to the ad_xcvrcon command to specify the device clock.

In case the same device clock is used for multiple JESD204 links, e.g. a TX
and a RX link only one reset generator is created.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-07-18 10:36:26 +02:00
Lars-Peter Clausen dd912e1fb8 adi_tquest.tcl: Check recovery and and removal timing
In addition to setup and hold also check recovery and removal, they are
just as important.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-06-13 10:12:40 +02:00
Istvan Csomortani ae1ec06ce6 fmcomms2:pr: Move project to a feature branch 2018-04-13 18:22:15 +03:00
Lars-Peter Clausen 1ea3ad28ae Add quiet mode to the Makefile system
The standard Makefile output is very noisy and it can be difficult to
filter the interesting information from this noise.

In quiet mode the standard Makefile output will be suppressed and instead a
short human readable description of the current task is shown.

E.g.
	> make adv7511.zed
	Building axi_clkgen library [library/axi_clkgen/axi_clkgen_ip.log] ... OK
	Building axi_hdmi_tx library [library/axi_hdmi_tx/axi_hdmi_tx_ip.log] ... OK
	Building axi_i2s_adi library [library/axi_i2s_adi/axi_i2s_adi_ip.log] ... OK
	Building axi_spdif_tx library [library/axi_spdif_tx/axi_spdif_tx_ip.log] ... OK
	Building util_i2c_mixer library [library/util_i2c_mixer/util_i2c_mixer_ip.log] ... OK
	Building adv7511_zed project [projects/adv7511/zed/adv7511_zed_vivado.log] ... OK

Quiet mode is enabled by default since it generates a more human readable
output. It can be disabled by passing VERBOSE=1 to make or setting the
VERBOSE environment variable to 1 before calling make.

E.g.
	> make adv7511.zed VERBOSE=1
	make[1]: Entering directory 'library/axi_clkgen'
	rm -rf *.cache *.data *.xpr *.log component.xml *.jou xgui
	*.ip_user_files *.srcs *.hw *.sim .Xil .timestamp_altera
	vivado -mode batch -source axi_clkgen_ip.tcl >> axi_clkgen_ip.log 2>&1
	...

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-04-11 15:09:54 +03:00
Lars-Peter Clausen 2b914d33c1 Move Altera IP core dependency tracking to library Makefiles
Currently the individual IP core dependencies are tracked inside the
library Makefile for Xilinx IPs and the project Makefiles only reference
the IP cores.

For Altera on the other hand the individual dependencies are tracked inside
the project Makefile. This leads to a lot of duplicated lists and also
means that the project Makefiles need to be regenerated when one of the IP
cores changes their files.

Change the Altera projects to a similar scheme than the Xilinx projects.
The projects themselves only reference the library as a whole as their
dependency while the library Makefile references the individual source
dependencies.

Since on Altera there is no target that has to be generated create a dummy
target called ".timestamp_altera" who's only purpose is to have a timestamp
that is greater or equal to the timestamp of all of the IP core files. This
means the project Makefile can have a dependency on this file and make sure
that the project will be rebuild if any of the files in the library
changes.

This patch contains quite a bit of churn, but hopefully it reduces the
amount of churn in the future when modifying Altera IP cores.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-04-11 15:09:54 +03:00
Istvan Csomortani 0f443f4779 project-*.mk Update CLEAN targets 2018-04-11 15:09:54 +03:00
Lars-Peter Clausen 89ad5f7836 Makefile: Change IP component dependency to component definition file
Currently the IP component dependency in the Makefile system is the Vivado
project file. The project file is only a intermediary product in producing
the IP component definition file.

If building the component definition file fails or the process is aborted
half way through it is possible that the Vivado project file for the IP
component exists, but the IP component definition file does not.

In this case there will be no attempt to build the IP component definition
file when building a project that has a dependency on the IP component.
Building the project will fail in this case.

To avoid this update the Makefile rules so that the IP component definition
file is used as the dependency. In this case the IP component will be
re-build if the component definition file does not exist, even if the
project file exists.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-04-11 15:09:54 +03:00
Lars-Peter Clausen 297940d5d9 Add shared project top-level Makefile
The project top-level Makefile accept the all, clean and clean-all targets
and forward them to their sub-projects.

Create a common Makefile include that can be used to implement this
behavior. The shared Makefile collects all sub-directories that have a
Makefile and then forwards the all, clean and clean-all targets to them.

This is implemented by creating virtual targets for each combination of
sub-project and all, clean, clean-all targets in the form of
"$project/all", ... These virtual sub-targets are then listed as the
prerequisites of the project top-level Makefile targets.

This means there is no longer a need to re-generate top-level Makefiles
when a new project or sub-project is added.

It will also allow to remove a lot of boilerplate code.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-04-11 15:09:54 +03:00
Lars-Peter Clausen 5272ed4eea Add common project Makefile for Xilinx projects
The project Makefiles for the Xilinx projects share most of their code. The
only difference is the list of project dependencies.

Create a file that has the common parts and can be included by the project
Makefiles.

This drastically reduces the size of the project Makefiles and also allows
to change the Makefile implementation without having to re-generate all
Makefiles.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-04-11 15:09:54 +03:00
Lars-Peter Clausen ec6128dd91 Add common project Makefile for Altera projects
The project Makefiles for the Altera projects share most of their code. The
only difference is the list of project dependencies.

Create a file that has the common parts and can be included by the project
Makefiles.

This drastically reduces the size of the project Makefiles and also allows
to change the Makefile implementation without having to re-generate all
Makefiles.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2018-04-11 15:09:54 +03:00