Verilog系列:【7】1bit的未声明线网

Verilog中对于未声明线网的处理一方面极大地简化了大规模设计或者网表中各模块的互联,另一方面如果使用不当也将会导致设计逻辑功能的异常。例如,线网连接到指定宽度端口的设计时,仿真后发现该矢量端口仅有最低位发生变化,其余各位未发生预期的变化。本文将对未声明线网在引起的此种情况以具体示例进行分析说明。

【示例】

仿真结果:


通过仿真我们可以总结出以下特点:
1.未显示声明的线网名与包含该线网的模块端口名一致,此时线网的宽度与该端口的宽度一致,如下例中add4x4中例化的u2_buf的in2,在add4x4中并未对in2进行声明,但是模块端口的定义中已经隐含了该线网的声明,因此in2的宽度与该模块端口一致,仿真变化将与端口变化一致,对于设计的仿真功能不构成影响。

2.未声明的线网仅在模块内使用,并未涉及到高模块的端口定义,那么此时该线网的宽度将会默认为一位宽(IEEE 1364-2001 Chapter 3.3)。如下例中的inl (spelled “in-ell”),因为该线网在add4x4中并未定义,将该线网连接到u1_buf的in端口,因为in的宽度为4,而inl的宽度为1位,那么将造成in的高三位将根据具体端口类型保持特定数值(将会在后续的topic中专门进行讨论),仅最低位与inl保持一致。

同时,从上述仿真结果可以看出,u1_buf中in的最低位与inl保持一致,即都是高阻态。但是在编译的过程中,仿真器仅会给出警告信息。

为了避免类似情况的出现,在设计和仿真的过程中需要明确模块内部使用的各种线网的宽度等信息,同时线网名应该组训一定的命名规则,避免笔误引起仿真功能的异常。

全部评论

相关推荐

11-11 16:40
已编辑
门头沟学院 人工智能
不知道怎么取名字_:这个有点不合理了,相当于已经毕业了,但还是没转正,这不就是白嫖
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务