硅芯思见:线网的隐性声明

硅芯思见

更多内容关注以上公众号↑↑↑↑↑↑↑↑↑↑,其中更新更多内容!

本文纯属学习之用,欢迎指正文中不足,封面图片若有侵权,请及时沟通!

线网(net)作为Verilog语言中两种主要数据类型之一(变量数据类型和线网数据类型),主要用来模拟数字设计中连接多个不同模块或者模型的物理连线,因此线网是不存储数据的(除了trireg类型),仿真时线网上显示的数据由驱动该线网的驱动源决定的。如果线网没有被有效驱动,那么其上表现出来的数据是高阻态(除了trireg)。同时同一个模块中不允许对同一个线网进行多次声明。

在仿真验证的过程中经常会遇到未声明的标识符在仿真过程中有时会报出错误信息或者警告信息,但是有时又不会出现任何信息,那么在什么情况下会给出对未声明的标识符的相关错误或者警告信息呢?本文将以示例进行讨论。

针对未声明标识符在具体设计中出现的具体位置,我们进行了以下几方面的仿真验证:

1.在过程性赋值语句中,未声明的标识符出现在表达式左侧或者右侧,示例如下:

 编译结果如下:

 2.在连续赋值语句中,未声明标识符出现在表达式右侧,示例如下:

 编译结果如下:

 3.连续赋值语句中,未声明标识符出现在表达式左侧,示例如下:

 编译过程未给出任何违例信息。

4.在模块的连接过程中,如果连接模块的线网没有进行声明,示例如下:

 编译过程未给出任何违例信息。

 但是,连接模块的线网如果使用不当尽管在编译的过程中不会给出任何违例信息,但是将会导致逻辑功能的异常。如下例设计意图是将拉高的in1与拉低的in2进行“&”操作后输出值out,代码示例如上述第4条代码示例,电路结果示意图如下:

 如果在编写代码的过程中,将连接and门的in1(spelled“in-one”)写错为inl(spelled “in-ell”),因为模块例化时未声明的线网将会隐含其已经声明,即编译仿真时将不会报错,但是实际上与门的in1并没有连接到高电平上,那么可想而知与门的输出必然不是期望的结果。

当然如果正确使用Verilog这种对于未声明的线网的隐性声明的特点,也会在某种程度上简化设计,特别是在较大的设计或者网表中。但是基于良好的设计风格,建议在设计的过程中凡是使用到的变量或者线网都要“事出有因”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硅芯思见

你的鼓励是我创作的最大源泉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值