To instantiate a Verilog module in a VHDL design, do the following:
- Declare a VHDL component with the same name as the Verilog module to be instantiated. VHDL direct entity instantiation is not supported when instantiating a Verilog module.
- Observe case sensitivity.
- Instantiate the Verilog component as if you were instantiating a VHDL
component.
- Binding a component to a specific design unit from a specific library by using a VHDL configuration declaration is not supported. Only the default Verilog module binding is supported.
- The only Verilog construct that can be instantiated in a VHDL design is a Verilog module. No other Verilog constructs are visible to VHDL code.
- During elaboration, Vivado synthesis treats all components subject to default binding as design units with the same name as the corresponding component name.
- During binding, Vivado synthesis treats a component
name as a VHDL design unit name and searches for it in the logical library
work.
- If Vivado synthesis finds a VHDL design unit, Vivado synthesis binds it.
- If Vivado synthesis does not find a VHDL design unit, it treats the component name as a Verilog module name and searches for it using a case sensitive search. Vivado synthesis selects and binds the first Verilog module matching the name.
- Because libraries are unified, a Verilog cell with the same name as a VHDL design unit cannot exist in the same logical library.
- A newly-compiled cell or unit overrides a previously-compiled cell or unit.