在vivado中的Settimg中,Target language可以选择verilog,也可以选择vhdl,该选项意味着在生成新的文件或ip时,默认的语言是什么,但实际上在使用时可以混用verilog和vhdl,两种语言的文件和模块可以相互调用,相互嵌套,只要保证在例化的时候接口一致就行。
但最近在检查一个老项目时发现一个相互调用的问题。个别老的项目在项目开发完并且性能稳定后,为了保证移植的便利性,将算法模块进行封装,变成.ngc文件,该做法也可以防止其他人对里面的代码进行更改,也对算法是一种保护。
但最近我发现某算法模块是用vhd开发并封装的,使用verilog例化该算法模块并调用该ngc文件时,会报错,verilog无法直接调用vhdl的ngc文件。
后来想到一个方法:
在中间再嵌套一级vhdl模块进行透传。具体做法即新建一个vhdl模块,例化ngc模块并进行调用,然后再使用verilog模块对新的vhd模块进行例化,间接对ngc进行调用,该方法亲测可行。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !