There were some questions on this forum about constants on *.bdf, e.g. https://community.intel.com/t5/Intel-Quartus-Prime-Software/Is-a-Quartus-bdf-file-can-access-a-packa...
The main problem is that if I would like to use *.bdf as my top-level file and I would like to have the ability to change some parameters I use generic/parameter to make it appear on top-level.
Imagine I would use vhd-file as top-level. I can write such code:
<...> library work; entity process_test is generic ( CCC : INTEGER := work.my_pack.myPar ); <...>
where my_pack is a package with constant myPar defined. During compilation, Quartus will create a proper scheme with the value of CCC equal to the value of myPar from the package.
While using *.bdf-file I can try to use the same approach:
But while compiling it gets an error.
I can't truly understand why it doesn't see my constants, because it definitely uses work library. However, I can't use any package with constants so they can be assigned to these parameters. Notice, whenever I generate *.vhd-file from any good *.bdf I see one important line:
which tells me that this file must get all information from work.
Of course, I can use the solution with set_parameter (https://community.intel.com/t5/Intel-Quartus-Prime-Software/Block-Diagram-File-with-Parameters-Gener...) but it doesn't really well for modelling in Modelsim plus it keeps constants only for top-level file, so with deep hierarchy, I can't set values for deep files.
Now, the question: is it normal behaviour for *.bdf? Why does it see work library but still doesn't see constants from work? Is there any way to add package on *.bdf?
Have you tried the KDB below? You can try to use the param primitives and constant primitives.
What is the error shown during the compilation?
Thank you for your answer. Yes, I tried this solution, but it is uncomfortable:
- it is a graphical info which I can't store in a separate file
- It is hard to keep in git
- I can't use same constant in different layers of files - I have to duplicate this param inside of another bdf
The error from the option I showed on image in my question is:
Error (275082): Illegal values "work.my_pack.myPar" for parameter "CCC". The type is "Signed Integer".
I guess that means that the compiler doesn't see my constant myPar from the package my_pack
Sorry for idling for sometime. The BDF is weak in handling this kind of situation.
My best bet is to write the design in VHDL in the first place.