Vivado 仿真器支持混合语言项目文件及混合语言仿真。这有助于您在 VHDL 设计中包含 Verilog 模块,反过来也是一样。
本文主要介绍使用 Vivado 仿真器进行混合语言仿真的一些要点。
仿真过程中混合语言的限制
VHDL 设计可以实例化 Verilog/System Verilog (SV) 模块,而 Verilog/SV 设计则可以实例化 VHDL 组件。基于组件实例化的的默认绑定可用于将 Verilog/SV 模块绑定至 VHDL 组件。具体而言,在 VHDL 组件中实例化的 Verilog/SV 模块不支持配置规范和直接实例化。不支持 VHDL 与 Verilog 的任何其它类型的混用,例如调用 Verilog 函数的 VHDL 进程。
Verilog/SV 模块的边界上允许 VHDL 类型、通用参数和端口的子集。同样,VHDL 组件的边界也允许 Verilog/SV 类型、参数和端口的子集。支持的数据类型可以在 (UG900) Vivado Design Suite 用户指南:逻辑仿真中找到。
注意:不支持将整个 VHDL 记录对象连接至 Verilog 对象。但是,支持类型的 VHDL 记录元件可以连接至兼容的 Verilog 端口。
Verilog/SV 层级参考无法引用 VHDL 单元,VHDL 扩展或选定名称也无法引用 Verilog/SV 单元。但 Verilog/SV 单元可以使用 Verilog 层级参考穿越中间 VHDL 实例进入另一个 Verilog/SV 单元。
绑定和搜索规则
当在 VHDL 架构中的 Verilog/SV 模块或 Verilog/SV 模块中实例化 VHDL 组件时,xelab 命令会执行以下任务:
首先搜索与实例化设计单元相同的语言单元。
如果没有找到相同语言的单元,则 xelab 会在 -L 选项指定的库中搜索跨语言设计单元。
搜索顺序与 xelab 命令行上的库出现的顺序相同。
注意:在使用 Vivado IDE 时,会自动指定库搜索顺序。用户无需干预,也无法干预。
混合语言组件的实例化
在 VHDL 设计单元中实例化 Verilog 模块:
1. 以相同名称断言 VHDL 组件,并使用与要实例化的 Verilog 模块相同的实例。
2. 使用命名或位置关联来实例化 Verilog 模块。
在 Verilog/SV 设计单元中实例化 VHDL 组件:
要在 Verilog/SV 设计单元中实例化 VHDL 组件,请像 Verilog/SV 模块那样实例化 VHDL 组件。
为确保您正确匹配端口类型,请点击“阅读原文”查看 (UG900) Vivado Design Suite 用户指南:逻辑仿真中的“端口映射”和“支持的端口类型”表