1090|12

9235

帖子

21

资源

版主

关于高云云源软件出现ERROR (PA2050) : Module 'xx' is instantiated but n...的测试 [复制链接]

 

因为参加GW1N这个FPGA的评测,当时的计划是使用GW1N采集LTC2380-24这颗24位ADC数据然后进行分析,但是LTC2380-24这个板子不知道放哪找不到了。正好手里还有一个ADS8958H这个18位500KSPS 8通道的ADC板子,因为之前用LTC2325-16那个16位4通道5MSPS的板子实现了我想要的功能,就没再用ADS8958H这个板子做相关测试。这个板子支持+-10V的输入电压和1M的输入阻抗,前段时间出现电容拉低电源电压的问题,当时就想要是这个板子能直接用就好了。所以这次就准备用GW1N驱一下。今天把板子的连线焊好,接上GW1N的板子后开始写程序。因为我是FPGA新手,怕代码写多了太多错误不好检查就先写点“编译”一下。

开始的时候我只是简单写了一些端口,一个初始化和always块,然后在top里做了例化。        

image.png  

image.png

“编译”时提示“ERROR  (PA2050) : Module 'ads8598h' is instantiated but not defined”错误,没有具体的位置,也找不到具体原因。

image.png  

于是我就一一对照各端口的拼写和符号是否为中文字符,再一行代码一行代码的去注释掉,花了很长时间最后发现例化时把下边这几行去掉就可以正常"编译”

image.png

再仔细分析发现这些必需注释掉才能正常编译的端口都是output类型,因为我是新手,这方面我有点懵,开始怀疑我的这种写法是否有问题,包括下边这种直接初始化。

  image.png

最后发现如果ps_serial为网线类型,然后通过assign给它赋值而不是直接写output reg  ps_serial=1'b1时就会正常。

image.png  

 是我的代码写错了吗?

为了验证我的想法,我使用vivado粘贴了类似的代码测试,开始的时候ads8598h没写初始化和always,其它还有top内容完全相同。

image.png

 

image.png

 

编译时提示:

[DRC INBB-3] Black Box Instances: Cell 'ads8598h_ins' of type 'ads8598h' has undefined contents and is considered a black box.  The contents of this cell must be defined for opt_design to complete successfully.

 

image.png  

然后我把初始化和always的注释去掉,这时和高云云源软件里出问题的代码一样,再编译竟然可以正常通过。

image.png

所以现在是高云云源软件有问题吗?还是我写的代码不规范,只不过vivado忽视了我的错误?

 

 

个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复

673

帖子

103

资源

纯净的硅(中级)

我是用VHDL的,Verilog略有了解。

所谓wire,就是指一条线直接连,只不过用了不同的网标,不占用宏单元;

reg就是寄存器,是实实在在要生成触发器或锁存器的,是要占用宏单元的。

不同的综合器,也许会有不同的优化。如果定义了reg,有可能综合器发现实际只用作wire,可能会自动优化成wire,看一下RTL图是什么样的。

点评

现在的情况是只要有一个output就会报错,无论它是wire还是reg。 [attachimg]583057[/attachimg] 而无论多少条output,只要有一个output使用assign赋值,无论它是哪个错误就会消失。 [attachimg]583060[/att  详情 回复 发表于 7 天前

回复

9235

帖子

21

资源

版主

gs001588 发表于 2022-1-11 22:43 我是用VHDL的,Verilog略有了解。 所谓wire,就是指一条线直接连,只不过用了不同的网标,不占用宏单元 ...

现在的情况是只要有一个output就会报错,无论它是wire还是reg。

image.png

而无论多少条output,只要有一个output使用assign赋值,无论它是哪个错误就会消失。

image.png  

  

或者任意一条output通过always赋值,而不是initial,这个错误也会消失。  image.png

这种情况像是这个module里不允许所有output都“悬空”,必需保证至少有一条不是“悬空”的。 

但是不清楚为什么initial或output reg rst = 1‘b1,这样的方式不行,也许是被优化掉了?或者不符合某些规则?

个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复

1292

帖子

1

资源

纯净的硅(初级)

写得不规范,begin end里面空了,其次,initial这种语法少写一点,很看编译软件

点评

我试了一下,看是不是always为空的原因。后来发现写一个cnt不做任何处理报错也会消失。 [attachimg]583124[/attachimg]    详情 回复 发表于 6 天前

回复

9235

帖子

21

资源

版主

不足论 发表于 2022-1-12 09:35 写得不规范,begin end里面空了,其次,initial这种语法少写一点,很看编译软件

我试了一下,看是不是always为空的原因。后来发现写一个cnt不做任何处理报错也会消失。

image.png  

个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复

673

帖子

103

资源

纯净的硅(中级)

会不会跟版本有关系呢,我用的1.9.8.01,试了没发现有问题呀

test_verilog.rar (12.22 KB, 下载次数: 2)

点评

不对,咱俩的版本好像是一样的。  详情 回复 发表于 6 天前
感谢帮忙测试,我下载你的工程直接编译也有错误。看样是版本的问题,一会下一个最新版本试试。 [attachimg]583228[/attachimg]    详情 回复 发表于 6 天前

回复

9235

帖子

21

资源

版主

gs001588 发表于 2022-1-12 17:31 会不会跟版本有关系呢,我用的1.9.8.01,试了没发现有问题呀     &n ...

感谢帮忙测试,我下载你的工程直接编译也有错误。看样是版本的问题,一会下一个最新版本试试。

image.png  

个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复

9235

帖子

21

资源

版主

gs001588 发表于 2022-1-12 17:31 会不会跟版本有关系呢,我用的1.9.8.01,试了没发现有问题呀     &n ...

不对,咱俩的版本好像是一样的。

个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复

9235

帖子

21

资源

版主

 

重装了一下,还是这个问题,奇怪了。

image.png

 

image.png

 

image.png      

点评

明白你的意思了。 是在布局布线时出的问题,不是综合的问题。在模块里面不写点啥,相当于只有个框框没内容,把编译器都整得不会了,没想到会有这种用法。 只要里面随便写点,有意义的,就可以过了,加个reg、w  详情 回复 发表于 6 天前
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复

673

帖子

103

资源

纯净的硅(中级)

本帖最后由 gs001588 于 2022-1-12 20:08 编辑
littleshrimp 发表于 2022-1-12 18:16   重装了一下,还是这个问题,奇怪了。          

明白你的意思了。

是在布局布线时出的问题,不是综合的问题。在模块里面不写点啥,相当于只有个框框没内容,猝不及防把编译器都整得不会了,没想到会有这种用法。

只要里面随便写点有意义的,就可以过了,加个reg、wire都可以。这也就是verilog比较灵活,只要加点东西从语法上该的有都有了,要是VHDL的话可能综合都不给你过。

2022-1-12_005.jpg

点评

对,应该就是你说的问题。 比较奇怪的是如果只有input没有output,没有内容也不报错。 如果有output,always里只判断某个input比如我之前的rst_n,会报错。 像你说的那样,如果有output,不需要对这些驱动  详情 回复 发表于 6 天前

回复

9235

帖子

21

资源

版主

gs001588 发表于 2022-1-12 20:06 littleshrimp 发表于 2022-1-12 18:16   重装了一下,还是这个问题,奇怪了。       ...

对,应该就是你说的问题。

比较奇怪的是如果只有input没有output,没有内容也不报错。

如果有output,always里只判断某个input比如我之前的rst_n,会报错。

像你说的那样,如果有output,不需要对这些驱动这些信号,只需要操作一个内部寄存器也可以正常。

大概的意思就是如果有output,模块里就应该有“写”的动作,哪怕不是写对应的output信号。

点评

应该是这么回事,也就是不同厂家的IDE环境、不同的编译器,有可能对这种处理的方式不同。其实只要是正常功能模块的话,肯定会有输出,也会有适当的操作,里面不会是空的。  详情 回复 发表于 5 天前
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复

673

帖子

103

资源

纯净的硅(中级)

littleshrimp 发表于 2022-1-12 20:45 对,应该就是你说的问题。 比较奇怪的是如果只有input没有output,没有内容也不报错。 如果有outpu ...

应该是这么回事,也就是不同厂家的IDE环境、不同的编译器,有可能对这种处理的方式不同。其实只要是正常功能模块的话,肯定会有输出,也会有适当的操作,里面不会是空的。

点评

对,像是IDE把这部分他认为没有实质内容的模块给优化掉了,也许可以通过设置解决。文档里我没检索到,白天我再找找设置。不过写代码难免会有错误,尤其是新手,出错时能有一个比较清晰的提示会有利于快速定位问题。  详情 回复 发表于 5 天前

回复

9235

帖子

21

资源

版主

gs001588 发表于 2022-1-13 00:55 应该是这么回事,也就是不同厂家的IDE环境、不同的编译器,有可能对这种处理的方式不同。其实只要是正常 ...

对,像是IDE把这部分他认为没有实质内容的模块给优化掉了,也许可以通过设置解决。文档里我没检索到,白天我再找找设置。不过写代码难免会有错误,尤其是新手,出错时能有一个比较清晰的提示会有利于快速定位问题。


回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    推荐帖子
    24V LED RGB5050灯带用了几个月后部分会死灯

    大家好! 直流24V LED RGB5050灯带用了几个月后会部分光源死灯,死的大多数是 ...

    如何让一个3V供电的蜂鸣器发出90分贝的声音?需要功率放大

    如何让一个3V供电的蜂鸣器发出90分贝的声音?需要功率放大

    SoC时代的多核DSP产品

    随着应用领域的扩大,人们对DSP应用系统的性能、功耗和成本提出了 越来越高的要求, ...

    基于esp32的diy掌机(原帖无法更新了)

    今天做完了,直接上视频吧,资料我整理下,随后发上来。 原帖见: http://bbs.e ...

    STM32MP157A-DK1测评 (7) M4核程序小试

    本帖最后由 cruelfox 于 2020-4-30 00:46 编辑   前面玩的都是 STM32MP157A 的 C ...

    AT32F437玩一玩(2)---简单识别个二维码

    对于这个芯片,挺失望的。特别是USB外设,各种问题,原厂技术也不承认那也没办法,后 ...

    关闭
    站长推荐上一条 1/6 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表