EMACs之verilog-mode使用教程

帮助文档

https://www.veripool.org/projects/verilog-mode/wiki/Verilog-mode-Help

初级使用教程

推荐博文1推荐博文2

GVIM中使用verilog-mode时,GVIM中有个plug-in,里面有一个自动生成的按钮,还有一个删除自动生成的按钮。
再按下自动生成的按钮之前,先来看看需要在RTL中加入什么。

module test(/*AUTOARG*/);
/*AUTOINPUT*/
/*AUTOOUTPUT*/
/*AUTOWIRE*/
/*AUTOREG*/

INST inst(/*AUOINST*/);

endmodule
// Local Variables:
// verilog-library-directories:("." "子目录" )
// End:
module INST(/*AUTOARG*/);

input a;
output b;
endmodule

有了上述代码,先在INST中按下自动生成按钮,将生成

module INST(/*AUTOARG*/
// Outputs
 b,
  // Inputs
  a);
input a;
output b;
endmodule

再按下test的自动生成按钮,将生成如下代码:

module test(/*AUTOARG*/
b,
a);
/*AUTOINPUT*/
input a;
/*AUTOOUTPUT*/
output b;
/*AUTOWIRE*/
/*AUTOREG*/

INST inst(/*AUOINST*/
.b(b),
.a(a));

endmodule
// Local Variables:
// verilog-library-directories:("." "子目录" )
// End:

从上可以看出,verilog-mode的作用就是在需要自动生成例化信号的地方写/AUTOINST/,需要自动生成输入信号则写/AUTOINPUT/。还有很多功能,可以参考上面的博文。例如需要按要求生成例化模块时,可以编写AUTO_TMEPLATE,编写时注意,不管信号是否位于信号的末尾,都需要加上,(逗号)。AUTO_TMEPLATE还可以通过@来根据模块例化的次数来给信号不同的命名,以及通过字符匹配搭配@来根据模块给不同的信号命名。还可以给不同例化模块的相同端口输入相同信号的不同位段(待学习,详见参考博文2)。使用[]可以自动给例化信号带上位宽。

注意事项

1、一般input信号与output信号自己写,reg与wire信号自动生成就好。如果顶层没有任何逻辑处理的话,只需要将各个例化模块与顶层外部的连接信号列出(input与output),其他子模块之间的交互信号需要的就在template中写好,那么/AUTOINPUT/与/AUTOOUTPUT/将不会生成任何信号,剩余的交互信号将生成在/AUTOWIRE/中。
2、所有子模块的输出如果不是其他子模块的输入,那么将自动生成在/AUTOOUTPUT/下。如果该子模块的输出信号是其他子模块的输入信号,且没有被定义为output,那么将生成在/AUTOWIRE/下。如果该子模块的输出信号是其他子模块的输入信号,且被定义为output,那么将不会再在/AUTOWIRE/下生成wire类型的信号,因为verilog中input与output端口在声明时都默认为wire类型,不用额外定义。
3、/AUTOWIRE/下生成wire一定是那些未被定义为output,且作为其他子模块输入的信号。
4、/AUTOREG/生成的reg是未被声明的输出。例如:.xxA(xxB)中xxA是insta的输出,但在顶层中被定义为xxB,那么output xxA(自己写的)就是一个未被声明的输出,如果output xxA没被删除,那么将生成一个xxA的reg信号,放在/AUTOREG/下。因此,一般/AUTOREG/下面应该没有任何信号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值