ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Verilog基础:隐式线网声明

Verilog基础:隐式线网声明

相关阅读

Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm=1001.2014.3001.5482


一般情况下,设计者会对线网(Net)进行显式声明,如图1所示。

图1 线网声明

但这不是绝对的,在没有显式声明的情况下,以下情况会被视为隐式线网声明。

1、如果一个标识符在模块端口定义中被使用,则应假定其为默认线网类型的隐式线网,并具有该端口定义中的向量宽度,如例1所示。

// 例1 module top_module(a, b, c); output [3:0] a; // 被认为是4-bit wire类型 input b; // 被认为是1-bit wire类型 input c; // 被认为是1-bit wire类型 assign a = {b, b, c, c}; endmodule

2、如果一个普通标识符(即非层次标识符)被用于一个模块实例的端口连接表达式中,且该标识符在模块实例的作用域中或该作用域可以直接引用的作用域中未被声明,则应假定其为默认线网类型的标量(即1-bit)隐式线网。

module top_module(a, b, result); input wire a, b; output wire result; and_block u_block (.x1(a), .x2(b), .x3(c), .y(result)); // c被认为是1-bit wire类型 endmodule

3、如果一个普通标识符(即非层次标识符)出现在连续赋值语句的左侧,且该标识符在连续赋值语句出现的作用域中或该作用域可以直接引用的任何作用域中未被声明,则应假定其为默认线网类型的标量(即1-bit)隐式线网。

module top_module(a, b); input wire a, b; assign result = a&b; // result被认为是1-bit wire类型 endmodule

对于以上三种情况,隐式线网属于其被引用的作用域;可以使用default_nettype编译指令改变默认线网类型(默认为wire)。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进