OpenCores
URL https://opencores.org/ocsvn/radiohdl/radiohdl/trunk

Subversion Repositories radiohdl

[/] [radiohdl/] [trunk/] [doc/] [radiohdl_hdl_library_key_descriptions.md] - Blame information for rev 7

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 7 danv
# RadioHDL library keys
2
 
3
---
4
#### Document history:
5
|Revision|Date|Author|Affiliation|Modification|
6
|:---|:---|:---|:---|:---|
7
|1.0|27 jan 2020|E. Kooistra|ASTRON |Created, using text from hdltool_readme.txt..|
8
 
9
---
10
#### Contents:
11
1 Introduction
12
2 General hdllib,cfg keys
13
3 Examples of hdllib.cfg configuration files
14
3.1 Example for a simple HDL library
15
3.2 Example for a HDL library that uses copies files
16
3.3 Example for a technology wrapper HDL library
17
3.4 Example for a board HDL library
18
3.5 Example for a board HDL top level design library
19
3.6 Example for a board HDL top level revision design library
20
3.7 Example for a HDL library for pre-generating and simulating IP
21
 
22
---
23
#### References:
24
[1] radiohdl_user_guide.md
25
[2] radiohdl_hdl_buildset_key_descriptions.md
26
[3] radiohdl_with_modelsim.md
27
[4] radiohdl_with_quartus.md
28
[5] radiohdl_hdl_buildset_uniboard1.md
29
 
30
---
31
## 1 Introduction
32
Each HDL library inRadioHDL has a hdllib.cfg file [1]. This document describes the keys that are used in the hdllib.cfg configuration files.
33
 
34
The hdllib.cfg can be divided into sections to group the keys that are used for a specific target. The sections headers are identified by a [section_name]. The first part of the hdllib.cfg has no section header and these general keys are available for all target scripts. The keys within in a section are used by a corresponding target script, for example:
35
 
36
* [modelsim_project_file] used by **modelsim_config**, described in [3]
37
* [quartus_project_file] used by **quartus_config**, described in [4]
38
 
39
A target script can use keys from more than one section. Future target scripts will have their own [section name] header in the hdllib.cfg. In this way the hdllib.cfg remains more organised and the keys per target are independent.
40
 
41
Keys in the hdllib.cfg can use key values from the hdl_buildset_.cfg configuration file [2].
42
 
43
---
44
## 2 General hdllib.cfg keys
45
The general hdllib keys are described here.
46
 
47
***hdl_lib_name***
48
The name of the HDL library, e.g. unb1_minimal.
49
 
50
***hdl_library_clause_name***
51
The name of the HDL library as it is used in the VHDL LIBRARY clause, e.g. unb1_minimal_lib.
52
 
53
***hdl_lib_uses_synth***  (see also the other 'hdl_lib_include_*' descriptions)
54
List of HDL library names that are used in this HDL library for the 'synth_files', only the libraries that appear in VHDL LIBRARY clauses need to be mentioned, all lower level libraries are found automatically. The following libraries have to be declared at the 'hdl_lib_uses_synth' key:
55
 
56
- Libraries with packages that are used
57
- Libraries with components that are instantiated as VHDL entities
58
 
59
Libraries that are instantiated as VHDL components can be specified at the 'hdl_lib_uses_synth' key, but instead it may also be specified at the 'hdl_lib_uses_ip' key. If there are different source variants of the component and if these source libraries can be missing in the 'lib_root_dirs' tree, then the library must be specified at the 'hdl_lib_uses_ip' key.
60
 
61
***hdl_lib_uses_ip***  (See also the other 'hdl_lib_include_*' descriptions)
62
The 'hdl_lib_uses_ip' typically defines IP libraries that have multiple variants even within a specific technology (as specified by hdl_buildset key 'technology_names'). However typically only one technology variant of the IP is used in a design. The 'hdl_lib_include_ip' key therefore defines the library that must be included in the list of library dependencies that are derived from 'hdl_lib_uses_ip'. Hence the 'hdl_lib_uses_ip' key defines the multiple choice IP libraries that are available in this library and the 'hdl_lib_include_ip' select which one (or more) are used by a higher level component (design). For technology libraries with only one IP library variant the IP libraries should be listed at the 'hdl_lib_uses_synth' key or at both the 'hdl_lib_uses_ip' and 'hdl_lib_include_ip' key. If a multiple choice IP library can be included always, then it may also be specified at the 'hdl_lib_uses_synth'.
63
Typically present, but unused IP is no problem. However for synthesis the constraint files of unused IP can cause problems. Therefore then use 'hdl_lib_include_ip' to only include this IP library from the IP variants in 'hdl_lib_uses_ip'. An example is to only include ip_stratixiv_ddr3_uphy_4g_800_master in unb1_ddr3 / io_ddr / tech_ddr by setting hdl_lib_include_ip = ip_stratixiv_ddr3_uphy_4g_800_master in the hdllib.cfg of unb1_ddr3. Another example is ip_stratixiv_tse_sgmii_lvds for tech_tse which is included by the board specific library unb1_board to avoid that the other ip_stratixiv_tse_sgmii_gx variant is also included when it is not actually used. This example also shows that a 'hdl_lib_include_ip' can also occur at some intermediate hierarchical component level in a design. The advantage is that the include of ip_stratixiv_tse_sgmii_lvds in the unb1_board hdlib.cfg now automatically applies to all designs that instantiate unb1_board. The exclusion can only be done when the component is instantiated as a VHDL component and not as a VHDL entity. Therefore the exclusion is done at the IP level, because the IP is instantiated as component. Hence the exclusion works because for a component instance that is not used, only the component declaration (in the component package) needs to be known by the tools. Hence the exclusion makes use of the same VHDL component mechanism as the technology independence.The exclusion is only done for synthesis, so not for simulation. The reason is that for simulation it is oke to keep the library included.
64
The difference between this 'hdl_lib_uses_ip' key and the 'hdl_lib_technology' key is that the HDL libraries with 'hdl_lib_technology' key value that does not match the specified technologies are not build. Whereas HDL libraries that are excluded via the combination of 'hdl_lib_include_ip' and 'hdl_lib_uses_ip' are still created in the build directory, but they are not used for that HDL library so they are excluded dynamically.
65
 
66
***hdl_lib_uses_sim***  (see also the other 'hdl_lib_include_*' descriptions)
67
List of HDL library names that are used in this HDL library for the 'test_bench_files', only the libraries that appear in VHDL LIBRARY clauses need to be mentioned, all lower level libraries are found automatically.
68
The 'hdl_lib_uses_synth' and 'hdl_lib_uses_ip' keys and 'hdl_lib_uses_sim' key separate the dependencies due to the 'synth_files' from the extra dependencies that come from the 'test_bench_files'. Quartus can exit with error if IP is included in the 'hdl_lib_uses_ip' list of libraries, but not actually used in the design, e.g. due to an sdc constraints file that is then sourced but that cannot find some IP signals. Having a seperate 'hdl_lib_uses_ip' and 'hdl_lib_uses_sim' key solves this issue, by avoiding that libraries that are only needed for test bench simulation get included in the list for synthesis. Often the 'test_bench_files' do not depend on other libraries then those that are already mentioned at the 'hdl_lib_uses_synth' key, so then the 'hdl_lib_uses_sim' remains empty.
69
 
70
***hdl_lib_include_ip***  (see also the 'hdl_lib_include_*' descriptions)
71
The 'hdl_lib_uses_*' keys identify which libraries are available for that particular HDL library. For simulation they are all included. The 'hdl_lib_include_ip' identifies which IP libraries from 'hdl_lib_uses_ip' will actually be included for synthesis. The 'hdl_lib_include_ip' typically appears in another higher layer HDL library. IP libraries can be included in the following ways:
72
 
73
- by listing the IP library name at the 'hdl_lib_uses_synth' key, then it is always included
74
- by listing the IP library name at the 'hdl_lib_uses_ip' key, and including it explicitly with the 'hdl_lib_include_ip' key.
75
 
76
The 'hdl_lib_include_ip' is typically set at:
77
 
78
- the design library that actually uses that IP library, this then has to be done per design revision.
79
- for IP in unb*_board that is used in all designs it is set in these unb*_board libraries so that it is then automatically included for all designs that use the unb*_board library (i.e. via ctrl_unb*_board.vhd).
80
- Note that specifying an IP library at the 'hdl_lib_uses_ip' key and then including it via 'hdl_lib_include_ip' in the same hdllib.cfg, is equivalent to specifying the IP library at the 'hdl_lib_uses_synth' key.
81
 
82
***hdl_lib_disclose_library_clause_names***  (see also the 'hdl_lib_include_*' descriptions)
83
If a component from a library is instantiated as a VHDL component (instead of as an VHDL entity) then that means that this library may be unavailable and then it has to be listed as a pair of lib_name and library_clause_name at this 'hdl_lib_disclose_library_clause_names' key. For components that are instantiated as components the actual source library may have been removed (via the 'hdl_lib_technology' key) or it may even not be present at all. The library clause name of instantiated components is used in the VHDL code at the LIBRARY statement in e.g. a tech_*.vhd file to ensure default component binding in simulation. The 'hdl_lib_disclose_library_clause_names' key is then used in the hdllib.cfg file of that (technology) wrapper library to disclose the library clause name of the component library that is listed at the hdl_lib_uses_* key. The disclosed library will be available as an empty library, to avoid a missing library error in Modelsim.
84
 
85
***hdl_lib_technology***
86
The IP technology that this library is using or targets, e.g. ip_stratixiv for UniBoard1, ip_arria10 for UniBoard2. For generic HDL libraries use empty ''. For simulating systems with multiple FPGA technologies it is also possible to list multiple IP technology names.
87
 
88
***synth_files***
89
Lists all HDL files that are needed for synthesis. For Modelsim they need to be in compile order and they are placed in the 'synth_files' project folder. For Quartus synthesis these files get included in the HDL library qip file. Both Verilog and VHDL files are supported.
90
 
91
***test_bench_files***
92
List all HDL files that are needed only for simulation. These are typically test bench files, but also HDL models. For Modelsim they need to be in compile order and they are placed in the 'test_bench_files' project folder. Both Verilog and VHDL files are supported. A synthesis tool should ignore this key.
93
 
94
***regression_test_vhdl***
95
List of pure VHDL testbenches that need to be included in the regression simulation test. For Modelsim this key is used by modelsim_regression_test_vhdl.py to simulate all testbenches and report their result in a log. The VDHL test benches must be self-checking and self-stopping.
96
 
97
### 2.1 [section_name]
98
***_copy_files***
99
The copy_files key can copy one file or a directory. The first value denotes the source file or directory and the second value denotes the destination directory. The paths may use environment variables. The file path or directory can be an absolute path or a relative path. The relative path can be from hdllib.cfg location or from the build dir location. Whether the source directory is the hdllib.cfg location or the build location depends on the . For modelsim_copy_files [3] and quartus_copy_files [4[] the relative source directory is the hdllib.cfg location and the relative destination directory is the build location. The direction can be from build dir to hdllib.cfg location or vice versa, or to any directory location in case absolute paths are used. The destination directory will be removed if it already exists, but only if it is within in the build location. If the destination directory is not in the build location, then it first needs to be removed manually to avoid accidentally removing a directory tree that should remain.
100
 
101
---
102
## 3 Examples of hdllib.cfg configuration files
103
 
104
### 3.1 Example for a simple HDL library
105
This shows a HDL library that contains firmware code for reading out sensors via I2C. The HDL library is called 'sens' at the ***hdl_lib_name*** key and from the ***hdl_lib_uses_synth*** key it follows that it dependents on the HDL libraries 'common' and 'i2c'. In VHDL the library 'sens' is declared by 'sens_lib', as defined by the ***hdl_library_clause_name*** key. The part of the 'sens' library that can be synthesized is listed at the ***synth_files*** key. The 'sens' library has a test bench for simulation listed at the ***test_bench_files*** key. The test bench is also listed at the ***regression_test_vhdl*** key, because it is suitable for a regression test, because it is self-checking and self-stopping.
106
 
107
```
108
hdl_lib_name = sens
109
hdl_library_clause_name = sens_lib
110
hdl_lib_uses_synth = common i2c
111
hdl_lib_uses_sim =
112
hdl_lib_technology =
113
 
114
synth_files =
115
    src/vhdl/sens_ctrl.vhd
116
    src/vhdl/sens.vhd
117
 
118
test_bench_files =
119
    tb/vhdl/tb_sens.vhd
120
 
121
regression_test_vhdl =
122
    tb/vhdl/tb_sens.vhd
123
 
124
[modelsim_project_file]
125
 
126
[quartus_project_file]
127
 
128
```
129
 
130
### 3.2 Example for a HDL library that copies files
131
 
132
This fft library contains reference data that is used in the test bench to verify the HDL in simulation. This reference data is copied from the source directory tree relative to where this hdllib.cfg is located, to the modelsim/fft sub directory in the build tree. The modelsim_config will create the data/ subdirectory in the build tree if it did not exist. If the data/ directory already exists, then it will just copy the files to it. Note that it is possible to list multiple copy from-to location pairs at the ***modelsim_copy_files*** key.
133
 
134
```
135
hdl_lib_name = fft
136
hdl_library_clause_name = fft_lib
137
hdl_lib_uses_synth = common mm dp diag rTwoSDF st
138
hdl_lib_uses_sim =
139
hdl_lib_technology =
140
 
141
synth_files =
142
    src/vhdl/fft_pkg.vhd
143
    src/vhdl/fft_sepa.vhd
144
    src/vhdl/fft_reorder_sepa_pipe.vhd
145
    src/vhdl/fft_sepa_wide.vhd
146
    src/vhdl/fft_r2_bf_par.vhd
147
    src/vhdl/fft_r2_pipe.vhd
148
    src/vhdl/fft_r2_par.vhd
149
    src/vhdl/fft_r2_wide.vhd
150
    src/vhdl/fft_wide_unit_control.vhd
151
    src/vhdl/fft_wide_unit.vhd
152
 
153
test_bench_files =
154
    tb/vhdl/tb_fft_pkg.vhd
155
    tb/vhdl/tb_fft_functions.vhd
156
    tb/vhdl/tb_fft_sepa.vhd
157
    tb/vhdl/tb_fft_reorder_sepa_pipe.vhd
158
    tb/vhdl/tb_fft_r2_bf_par.vhd
159
    tb/vhdl/tb_fft_r2_pipe.vhd
160
    tb/vhdl/tb_fft_r2_par.vhd
161
    tb/vhdl/tb_fft_r2_wide.vhd
162
    tb/vhdl/tb_fft_wide_unit.vhd
163
    tb/vhdl/tb_mmf_fft_r2.vhd
164
    tb/vhdl/tb_mmf_fft_wide_unit.vhd
165
    tb/vhdl/tb_tb_fft_r2_pipe.vhd
166
    tb/vhdl/tb_tb_fft_r2_par.vhd
167
    tb/vhdl/tb_tb_fft_r2_wide.vhd
168
 
169
regression_test_vhdl =
170
    tb/vhdl/tb_tb_fft_r2_pipe.vhd
171
    tb/vhdl/tb_tb_fft_r2_par.vhd
172
    tb/vhdl/tb_tb_fft_r2_wide.vhd
173
 
174
[modelsim_project_file]
175
modelsim_copy_files =
176
    ../rTwoSDF/tb/data data
177
    tb/data data
178
 
179
[quartus_project_file]
180
```
181
 
182
### 3.3 Example for a technology wrapper HDL library
183
 
184
This tech_fifo is a HDL library that VHDL files that wrap IP generated for a FIFO. The FIFO IP for different FPGA types is kept in dedicated HDL libraries. The tech_fifo provides a technology independent interface to these IP FIFOs. Dependent on a technology selection parameter only one IP FIFO will be used. The tech_fifo.vhd does declare all IP HDL libraries at the VHDL LIBRARY clause, to ensure default binding in simulation. The LIBRARY clause is ignored by synthesis. The ***hdl_lib_disclose_library_clause_names*** is used avoid a simulation error for the IP FIFO libraries that are not selected, when the tech_fifo is used in a particular application.
185
 
186
```
187
hdl_lib_name = tech_fifo
188
hdl_library_clause_name = tech_fifo_lib
189
hdl_lib_uses_synth = technology ip_stratixiv_fifo ip_arria10_fifo ip_arria10_e3sge3_fifo ip_arria10_e1sg_fifo
190
hdl_lib_uses_sim =
191
hdl_lib_technology =
192
hdl_lib_disclose_library_clause_names =
193
    ip_stratixiv_fifo      ip_stratixiv_fifo_lib
194
    ip_arria10_fifo        ip_arria10_fifo_lib
195
    ip_arria10_e3sge3_fifo ip_arria10_e3sge3_fifo_lib
196
    ip_arria10_e1sg_fifo   ip_arria10_e1sg_fifo_lib
197
 
198
synth_files =
199
    tech_fifo_component_pkg.vhd
200
    tech_fifo_sc.vhd
201
    tech_fifo_dc.vhd
202
    tech_fifo_dc_mixed_widths.vhd
203
 
204
test_bench_files =
205
 
206
regression_test_vhdl =
207
    # no self checking tb available yet
208
 
209
[modelsim_project_file]
210
 
211
[quartus_project_file]
212
```
213
 
214
### 3.4 Example for a board HDL library
215
 
216
This board HDL library serves as a board support package (BSP) that can be used for all applications that run on the FPGA. Hence a top level design with only this BSP servers as a minimal design for that FPGA board. The unb1_board library shows how the ***hdl_lib_include_ip*** key is used to for example only include the ip_stratixiv_tse_sgmii_lvds IP library for the Tripple Speed Ethernet IP and not the other IP that also exists in the technology wrapper for the 1GbE IP.
217
 
218
```
219
hdl_lib_name = unb1_board
220
hdl_library_clause_name = unb1_board_lib
221
hdl_lib_uses_synth = common dp diag uth ppsh i2c tr_nonbonded eth remu technology tech_pll epcs
222
hdl_lib_uses_sim =
223
hdl_lib_technology = ip_stratixiv
224
hdl_lib_include_ip = ip_stratixiv_tse_sgmii_lvds
225
                     ip_stratixiv_pll
226
                     ip_stratixiv_pll_clk25
227
 
228
synth_files =
229
    src/vhdl/unb1_board_pkg.vhd
230
    src/vhdl/unb1_board_system_info.vhd
231
    src/vhdl/unb1_board_system_info_reg.vhd
232
    src/vhdl/mms_unb1_board_system_info.vhd
233
    src/vhdl/unb1_board_clk_rst.vhd
234
    src/vhdl/unb1_board_clk200_pll.vhd
235
    src/vhdl/unb1_board_clk25_pll.vhd
236
    src/vhdl/unb1_board_wdi_extend.vhd
237
    src/vhdl/unb1_board_node_ctrl.vhd
238
    src/vhdl/unb1_board_sens_ctrl.vhd
239
    src/vhdl/unb1_board_sens.vhd
240
    src/vhdl/unb1_board_sens_reg.vhd
241
    src/vhdl/mms_unb1_board_sens.vhd
242
    src/vhdl/unb1_board_wdi_reg.vhd
243
    src/vhdl/ctrl_unb1_board.vhd
244
 
245
    src/vhdl/unb1_board_front_io.vhd
246
 
247
    src/vhdl/unb1_board_mesh_io.vhd
248
    src/vhdl/unb1_board_mesh_reorder_tx.vhd
249
    src/vhdl/unb1_board_mesh_reorder_rx.vhd
250
    src/vhdl/unb1_board_mesh_reorder_bidir.vhd
251
    src/vhdl/unb1_board_mesh_uth_terminals_bidir.vhd
252
 
253
    src/vhdl/unb1_board_back_io.vhd
254
    src/vhdl/unb1_board_back_select.vhd
255
    src/vhdl/unb1_board_back_reorder.vhd
256
    src/vhdl/unb1_board_back_uth_terminals_bidir.vhd
257
 
258
    src/vhdl/unb1_board_terminals_mesh.vhd
259
    src/vhdl/unb1_board_terminals_back.vhd
260
 
261
    src/vhdl/unb1_board_peripherals_pkg.vhd
262
 
263
    # For BN the $RADIOHDL/boards/uniboard1/designs/unb1_bn_terminal_bg/src/vhdl/node_unb1_bn_terminal_bg.vhd is referred to directly in the apertif_unb1_bn_filterbank library. For FN a copy of $RADIOHDL/boards/uniboard1/designs/unb1_fn_terminal_db/src/vhdl/node_unb1_fn_terminal_db.vhd is taken via this unb1_board library:
264
 
265
    src/vhdl/node_unb1_fn_terminal_db.vhd
266
 
267
test_bench_files =
268
    tb/vhdl/tb_unb1_board_pkg.vhd
269
 
270
    tb/vhdl/tb_mms_unb1_board_sens.vhd
271
    tb/vhdl/tb_unb1_board_clk200_pll.vhd
272
    tb/vhdl/tb_unb1_board_node_ctrl.vhd
273
 
274
    tb/vhdl/unb1_board_mesh_model_sosi.vhd
275
    tb/vhdl/unb1_board_mesh_model_siso.vhd
276
    tb/vhdl/unb1_board_mesh_model_sl.vhd
277
    tb/vhdl/unb1_board_back_model_sosi.vhd
278
    tb/vhdl/unb1_board_back_model_sl.vhd
279
 
280
    tb/vhdl/tb_unb1_board_mesh_reorder_bidir.vhd
281
 
282
    tb/vhdl/tb_tb_tb_unb1_board_regression.vhd
283
 
284
regression_test_vhdl =
285
    tb/vhdl/tb_mms_unb1_board_sens.vhd
286
    tb/vhdl/tb_unb1_board_mesh_reorder_bidir.vhd
287
 
288
[modelsim_project_file]
289
 
290
[quartus_project_file]
291
```
292
 
293
### 3.5 Example for a board HDL top level 'mother' design library
294
 
295
This top level 'mother' design library uses the 'unb1_board' board library to construct a design with only the Board Support Package functionality, that can serve as a minimal design that can run on the FPGA board. However this unb1_board library is not used directly, instead it is used as a 'mother' design libnrary that is used in revisions.
296
 
297
```
298
hdl_lib_name = unb1_minimal
299
hdl_library_clause_name = unb1_minimal_lib
300
hdl_lib_uses_synth = common mm unb1_board
301
hdl_lib_uses_sim =
302
hdl_lib_technology = ip_stratixiv
303
 
304
synth_files =
305
    $RADIOHDL_BUILD_DIR/unb1/quartus/unb1_minimal_sopc/sopc_unb1_minimal.vhd
306
    src/vhdl/qsys_unb1_minimal_pkg.vhd
307
    src/vhdl/mmm_unb1_minimal.vhd
308
    src/vhdl/unb1_minimal.vhd
309
 
310
test_bench_files =
311
    tb/vhdl/tb_unb1_minimal.vhd
312
 
313
[modelsim_project_file]
314
modelsim_copy_files =
315
 
316
[quartus_project_file]
317
quartus_copy_files =
318
```
319
 
320
### 3.6 Example for a board HDL top level revision design library
321
 
322
This top level revision design library 'unb1_minimal_qsys' uses the 'mother' design library 'unb1_minimal' to construct a design that can be synthesized and run an FPGA of the UniBoard1 [5]. Therefore this 'unb1_minimal_qsys' HDL design library uses the [quartus_project_file] section to declare the keys that are needed to configure the synthesis.
323
 
324
```
325
hdl_lib_name = unb1_minimal_qsys
326
hdl_library_clause_name = unb1_minimal_qsys_lib
327
hdl_lib_uses_synth = unb1_board unb1_minimal
328
hdl_lib_uses_sim =
329
hdl_lib_technology = ip_stratixiv
330
 
331
synth_files =
332
    unb1_minimal_qsys.vhd
333
 
334
test_bench_files =
335
    tb_unb1_minimal_qsys.vhd
336
    tb_unb1_minimal_qsys_stimuli.vhd
337
 
338
regression_test_vhdl =
339
    tb_unb1_minimal_qsys_stimuli.vhd
340
 
341
[modelsim_project_file]
342
 
343
[quartus_project_file]
344
synth_top_level_entity =
345
 
346
quartus_copy_files =
347
    ../../quartus/qsys_unb1_minimal.qsys .
348
 
349
quartus_qsf_files =
350
    $RADIOHDL/boards/uniboard1/libraries/unb1_board/quartus/unb1_board.qsf
351
 
352
quartus_sdc_files =
353
    $RADIOHDL/boards/uniboard1/libraries/unb1_board/quartus/unb1_board.sdc
354
 
355
quartus_tcl_files =
356
    ../../quartus/unb1_minimal_pins.tcl
357
 
358
quartus_vhdl_files =
359
 
360
quartus_qip_files =
361
    $HDL_BUILD_DIR/unb1/quartus/unb1_minimal_qsys/qsys_unb1_minimal/synthesis/qsys_unb1_minimal.qip
362
```
363
 
364
Note: With another top level revision design library called 'unb1_minimal_sopc' it is possible to synthesize the same functionality, but than using the SOPC tool instead of QSYS tool from Altera to created the IP block for the memory mapped bus with NiosII master.
365
 
366
### 3.7 Example for a HDL library for pre-generating and simulating IP
367
 
368
The ***qmegawiz_ip_files*** key in this 'ip_stratixiv_mac_10g' IP library is used by **generate_ip_libs** to know that it can pre-generate a 10GbE MAC for the strativiv FPGA. The ***modelsim_compile_ip_files*** will be used by **modelsim_config*** to include the compile_ip.tcl script when this library is compiled in Modelsim. The compile_ip.tcl refers to simualtion models for the 10GbE MAC.
369
 
370
```
371
hdl_lib_name = ip_stratixiv_mac_10g
372
hdl_library_clause_name = ip_stratixiv_mac_10g_lib
373
hdl_lib_uses_synth = common
374
hdl_lib_uses_sim =
375
hdl_lib_technology = ip_stratixiv
376
 
377
synth_files =
378
 
379
test_bench_files =
380
 
381
[modelsim_project_file]
382
modelsim_copy_files =
383
 
384
modelsim_compile_ip_files =
385
    $RADIOHDL_WORK/libraries/technology/ip_stratixiv/mac_10g/compile_ip.tcl
386
 
387
[quartus_project_file]
388
quartus_copy_files =
389
 
390
quartus_vhdl_files =
391
    ip_stratixiv_mac_10g.vhd
392
 
393
quartus_sdc_files =
394
 
395
quartus_qip_files =
396
    ip_stratixiv_mac_10g.qip
397
 
398
[generate_ip_libs]
399
qmegawiz_ip_files =
400
    ip_stratixiv_mac_10g.vhd
401
```
402
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.