The Python peripherals are still in the $UNB/Software/python/peripherals directory. At some time we need to move
these also to RadioHDL. The peripherals could be located central again or local in a src/python directory. An
intermediate scheme is also possible whereby the periperal is kept local but copied to a central build/python
directory by means of a python_config.py script. The advantage of a central directory is that the periperals
these also to RadioHDL. The peripherals could be located central again or local in a src/python directory. A first
step can be to svn copy the $UNB/Software/python dir to $RADIOHDL/software/python to become independent of the
$UNB tree. An intermediate scheme is also possible whereby the periperal is kept local but copied to a central
build/python directory by means of a python_config.py script. The advantage of a central directory is that the periperals
are grouped so that only a single Python search path is needed. The disadvantage of having a fixed central
location in SVN is that peripherals that are application specific also need to be located there. Another option
may be to use a synbolic link from a central directory to each local Python peripheral.
...
...
@@ -1043,27 +1057,27 @@ that are actually used on our board. If we make a new board with another FPGA, t
r) Improve toolset scheme
The toolset defines the combination of Modelsim version and Quartus version. Currently there are two toolsets 'unb1' and 'unb2'. This
The toolset defines the combination of Modelsim version and Quartus version. Currently there are two toolsets 'unb1', 'unb2' and 'unb2a'. This
toolset scheme needs to be improved because:
- for python they are defined by the hdltool_<toolset>.cfg, but for the run_* bash scripts they are defined in set_modelsim and set_quartus,
can they be defined in a common source (eg. base on hdltool_<toolset>.cfg set an environment variable and use that for bash). The bash
can they be defined in a common source (eg. base on hdltool_<toolset>.cfg set an environment variable and uses that for bash). The bash
script must then be ran from the same terminal as where the python config script was used to set the environment variable, because otherwise
the environment variable is not set or may not be correct.
- the toolsets are tight to a board name 'unb1' (is that oke?) or should we use more general toolset names, or do we need a symbolic toolset names at all?
- there is also a 'site' level in the bash scripts (is that still needed?)
s) Declare IP libraries to ensure default binding in simulation.
Currently the IP library is declared in the technology VHDL file e.g. like 'LIBRARY ip_arria10_ddr4_4g_1600_altera_emif_150;' in tech_ddr_arria10.vhd.
This IP library clause is ignored by synthesis. The IP library must be mapped for simulation, because otherwise Modelsim gives
an error when it compiles the VHDL. Therefore the IP library can then not be excluded with hdl_lib_excludes key.
an error when it compiles the VHDL. Therefore the IP library can then not be excluded for simulation with 'hdl_lib_include_ip' key.
Alternatively the LIBRARY clause could be omitted if the IP library is added to the -L libraries search list of each simulation configuration the
Modelsim project file. This can be achieved adding the IP library to the modelsim_search_libraries key in the hdltool_unb2.cfg. However the problem is
then that if the IP library is not mapped to a directory then Modelsim will issue an error when it tries to search it.
The unb2_test uses almost all IP libraries and then the revision uses hdl_lib_excludes to exclude the IP libraries that are not needed. It is not
necessary to exclude all IP libraries that are not used, but at least the ones that will cause errors if their qip/sdc file is sourced.
--> For now keep the hdl_lib_excludes but only use it for synthesis, for simulation the hdl_lib_excludes is ignored.
--> For now keep the 'hdl_lib_include_ip' but only use it for synthesis. For simulation the 'hdl_lib_include_ip' is ignored. Which is fine because
for simulation there is no need to exclude IP libraries.
#use_lib_dicts = self.libs.get_dicts('hdl_lib_name', values=use_lib_order) # uses original libs.dicts order, but
use_lib_dicts=self.get_lib_dicts_from_lib_names(lib_names=use_lib_order)# must preserve use_lib_order order to ensure that top level design qip with sdc file is include last in qsf
forlib_dictincm.listify(use_lib_dicts):
...
...
@@ -229,7 +228,7 @@ class QuartusConfig(hdl_config.HdlConfig):