阿里云商业网站建设视频,owl WordPress,百度小程序是什么,怎么知道网站谁建的一#xff1a;verilog mode中如何使用正则表达
在顶层实例化时#xff0c;有大量的信号需要重新命名#xff0c;使用模板的话会增加大量的注释内容#xff0c;不过往往这些信号命名有特定的规律#xff0c;我们可以使用正则表达式来处理#xff0c;下面举几个例子#…一verilog mode中如何使用正则表达
在顶层实例化时有大量的信号需要重新命名使用模板的话会增加大量的注释内容不过往往这些信号命名有特定的规律我们可以使用正则表达式来处理下面举几个例子
1提取信号中固定位置的数字
.pci_req\([0-9]\)_j (pci_req_jtag_[\1]),.pci_req12_j (pci_req_jtag_[12]),
或者使用 .pci_req_l (pci_req_jtag_[\1]),
2删除末尾下划线内容
.\(.*\)_j (\1_[]),.pci_req_j (pci_req[7:0])
这个我个人最常用
二AUTOINSTPARAM的使用
如何在实例化的时候自动填充参数列表AUTOINSTPARAM可以做到如下
module InstModule;parameter PARAM1 1;parameter PARAM2 2;
endmodulemodule ModnameTest;InstModule #(/*AUTOINSTPARAM*/// Parameters.PARAM1 (PARAM1),.PARAM2 (PARAM2))instName(/*AUTOINST*/...);
三多目录问题如果文件在同一个目录可以忽略
// Local Variables:
// verilog-library-directories:(. subdir subdir2)
// verilog-library-files:(/some/path/technology.v /some/path/tech2.v)
// verilog-library-extensions:(.v .h)
// End:
verillog-mode首先在当前目录查找
verilog-library-extensions中查找带有每个扩展名的模块名通常是一个’.v’
verilog-library-directories包含了要在其中查找模块的目录列表
verilog-library-files包含一个文件列表这些文件将完整地搜索模块。这通常是到技术文件的完整路径其中定义了许多标准单元
四AUTOXXX
module top_md(/*AUTOARG*/);
input din1;
input [1:0] din2;output dout1;
output [1:0] dout2;/*AUTOINOUT*/
/*AUTOINPUT*/
/*AUTOOUTPUT*/
/*AUTOWIRE*/wire din_a;
wire din_b;assign din_a din2[0];
assign din_b din2[1];sub_md u_sub_md
(/*AUTOINST*/
);assign dout2[1:0] dout_a[1:0];endmodule // top_md
上面的例子包含了AUTOARG/AUTOINPUT/AUTOOUTPUT/AUTOWIRE/AUTOINOUT
不支持带 ifdefs 等条件限制的端口声明如有此需求可以将其写在 AUTOARG 前 AUTOARG 不会对其进行重新声明。不过不建议这种方式因为在 AUTOINST 中会引入更多的 ifdefs 。
module ex_arg (
ifdef need_x_inputx,
endif/*AUTOARG*/// Outputso,// Inputsi);ifdef need_x_inputinput x; // This is an optional input, if need_x_signal is defined
endif...
五信号模板中使用Lisp
在AUTO_TEMPLATE中指定简单的线名称并不能够解决所有需求尤其是在多个实例化中使用同一信号不同数据位时。因此Verilog-Mode允许你编写一个程序来进行计算并为实例化端口进行命名如下
/* InstModule AUTO_TEMPLATE (.a(in[( (* 8 ) 7):(* 8 )]),);*/InstModule u_a0 (/*AUTOINST*/// Inputs.a (in[7:0])); // Templated
InstModule u_a1 (/*AUTOINST*/// Inputs.a (in[15:8])); // Templated
InstModule u_a2 (/*AUTOINST*/// Inputs.a (in[23:16])); // Templated
InstModule u_a3 (/*AUTOINST*/// Inputs.a (in[31:24])); // Templated 这里对上述Lisp代码部分解释一下 也就是 ( (* 8 ) 7):(* 8 )
基础结构为 代表为输入参数引号内为计算处理每个括号内容为一步计算形如 (* 8 ) 意思是 参数乘8( (* 8 ) 7) 就是将 (* 8 ) 的结果加7
参考连接 Emacs verilog-mode 的使用 – Wenhuis Rotten Pen
Linux中verilog-mode使用方法总结_实例化代码和设计代码可以不放在一个文件里,利用verilog-library-files变量设_Alfred.HOO的博客-CSDN博客