Emacs verilog AUTOINST & parameter问题
时间:10-02
整理:3721RD
点击:
Emacs Verilog比较好用,号称神的语言,但,有个问题一直困扰我,寻求无果。
假设代码中有两层hierarchy,顶层叫top,底层叫down,
即在top中例化down。
一般使用Emacs的/AUTOINST/来自动连接例化时的连接关系。
但,倘若down模块中有使用localparam参数化某个端口的位宽,
那么,/AUTOINST/连接出来的也是带参数的!
这带来的问题就是:top中也需要定义该参数!
如:down中定义
parameter WIDTH = 2;
input [WIDTH-1:0] IN;
top 中例化
down Udown(/AUTOINST/); // AUTOINST两边应该是注释符,防火墙会屏蔽,所以未补全
这样的结果是 :
down Udown(.IN(IN[WIDTH-1:0]));// 造成了top中需要定义WIDTH!
不知各位大大有无处理方法。
PS:
我遇到的情况是down为IP,应该为设计通用而使用parameter,所以自然不希望改动down的代码;
有一种法子,是在top中例化down的时候,涉及parameter的端口,不使用/AUTOINST/补齐,不过这样似乎不太好。
1、我期望的是,或者是奢望,Emacs-verilog中,C-c C-a后,top例化模块down端口上的参数显式表现出来?
即
down Udown(.IN(IN[1:0]));
哪怕是
down Udown(.IN(IN[2-1:0]));
也成啊。
2、对于parameter的处理,因为各种IP(我见过的一般都)有不少parameter设定,整合的时候,大家如何处理或者说是抽取这么多的parameter至顶层使用?
可能我太不务正业了,
不过,很渴望交流一下各位大大的做法,
诚恳请教各位大大!
在此先谢过!
假设代码中有两层hierarchy,顶层叫top,底层叫down,
即在top中例化down。
一般使用Emacs的/AUTOINST/来自动连接例化时的连接关系。
但,倘若down模块中有使用localparam参数化某个端口的位宽,
那么,/AUTOINST/连接出来的也是带参数的!
这带来的问题就是:top中也需要定义该参数!
如:down中定义
parameter WIDTH = 2;
input [WIDTH-1:0] IN;
top 中例化
down Udown(/AUTOINST/); // AUTOINST两边应该是注释符,防火墙会屏蔽,所以未补全
这样的结果是 :
down Udown(.IN(IN[WIDTH-1:0]));// 造成了top中需要定义WIDTH!
不知各位大大有无处理方法。
PS:
我遇到的情况是down为IP,应该为设计通用而使用parameter,所以自然不希望改动down的代码;
有一种法子,是在top中例化down的时候,涉及parameter的端口,不使用/AUTOINST/补齐,不过这样似乎不太好。
1、我期望的是,或者是奢望,Emacs-verilog中,C-c C-a后,top例化模块down端口上的参数显式表现出来?
即
down Udown(.IN(IN[1:0]));
哪怕是
down Udown(.IN(IN[2-1:0]));
也成啊。
2、对于parameter的处理,因为各种IP(我见过的一般都)有不少parameter设定,整合的时候,大家如何处理或者说是抽取这么多的parameter至顶层使用?
可能我太不务正业了,
不过,很渴望交流一下各位大大的做法,
诚恳请教各位大大!
在此先谢过!
