Following up on a previous post, VHDL Pragmas, this is an incomplete list of supported VHDL pragmas, organized by vendor.
As an introduction, most pragmas have the following structure:
-- trigger directive
where trigger
is a keyword such as pragma
or synthesis
, and the directive
is a special compiler directive.
Many tools support several triggers, each with identical meaning.
Synopsys
https://eecs.wsu.edu/~daehyun/teaching/2016_EE434/dhkim/Tutorial/VHDL_USER_GUIDE.pdf (Chapter 6) http://www.pldworld.com/_hdl/4/_ref/synopsys/vhdlref_v1999.05,May.1999.pdf (Chapter 9)
Triggers:
- synopsys
- pragma
Known directives are:
-- pragma translate_off
-- pragma translate_on
-- pragma synthesis_off
-- pragma synthesis_on
-- pragma resolution_method wired_and
-- pragma resolution_method wired_or
-- pragma resolution_method three_state
-- pragma map_to_entity entity_name
-- pragma return_port_name port_name
ActiveHDL
https://www.aldec.com/resources/manuals/Active-HDL/vsa00265.htm
No triggers.
Disable compilation (and simulation):
-- vhdl_comp_on
-- vhdl_comp_off
Disable code coverage analysis:
-- vhdl_cover_off
-- vhdl_cover_on
-- coverage off
-- coverage on
Intel Quartus
Triggers:
- synthesis
- synopsys
- pragma
- exemplar
- altera (not clear if this is supported for all directives, but given as an example trigger for
message_level
)
Directives:
-- synthesis translate_on
-- synthesis translate_off
-- synthesis library <my_lib>
-- altera message_level
-- altera message_on
-- altera message_off
-- synthesis VHDL_INPUT_VERSION
-- synthesis read_comments_as_HDL on
-- synthesis read_comments_as_HDL off
Note that the last two directives allow the synthesis tool to interpret commented code as VHDL. This is the opposite as the synthesis translate_off
pragma, which suppresses VHDL code as if it were commented.
Xilinx
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_1/ug901-vivado-synthesis.pdf
Triggers:
- synthesis
- synopsys
- pragma
- xilinx
Directives:
-- synthesis translate_off
-- synthesis translate_on
IEEE VHDL
https://ieeexplore.ieee.org/document/1342563
-- RTL_SYNTHESIS OFF
-- RTL_SYNTHESIS ON
Conclusion
While the IEEE standard on synthesizable VHDL code specifies -- RTL_SYNTHESIS OFF
or ON
as the only legal metacomment pragmas, this does not correspond to the tool vendors’ implementations. From what I gather, your safest bet is:
-- pragma translate_off
-- pragma translate_on
If you find that any information is missing in this post, please write a comment. It would be great if you can also provide a reference to the original documentation.
See also
- VHDL Physical Type is not Synthesizable, or is it? (part 2) (legacy)
- VHDL Physical Type is not Synthesizable, or is it? (legacy)
- You can't write VHDL code without an intelligent editor! (opinion)
- Importing a Quartus project in Sigasi Visual HDL (knowledge)
- Opening VHDL files in Sigasi, using Quartus (legacy)