inter 发表于 2010-6-27 23:27:03

testbench的写法,这样写是规范的么?

module ex2_6;
//test bench
reg clk=0,nrst=1,sel=0;
reg din=0,dout;
always #10 clk=~clk;
initial begin
#50 nrst=0;
#70 nrst=1;
#80 sel=1;
#15 sel=0;
end

integer seed=4;
always@(posedge clk)
din<=#1 $random(seed);

//circuit
wire temp={dout,dout};
always @(posedge clk or negedge nrst)
if (~nrst)   dout<=0;
else if (sel==1) dout<=din;
else   dout<=temp;

endmodule
只看语法,这样写是规范的么?

CHANG 发表于 2010-6-28 00:12:14

没有什么不对的地方啊

CCIE 发表于 2010-6-28 00:52:08

非常规范呀,当然必须调整好缩进。

CHA 发表于 2010-6-28 02:31:40

很标准阿,不错

CCIE 发表于 2010-6-28 03:04:37

呵呵,一直是这么写的呢

CHA 发表于 2010-6-28 03:14:36

没有问题。

ngtim 发表于 2010-6-28 05:03:30

不太规范.

longtime 发表于 2010-6-28 06:02:31

疑问的话也没说出来在什么地方,

ICE 发表于 2010-6-28 07:31:17

第一,在一些公司里,reg clk=0,nrst=1,sel=0,像这样的赋值是要分开来写的,就是要用三个reg来写,一是不容易将位宽写错,二是便于以后程序的修改,而且每个语句后要加上说明.<br>
第二,#10最好不用数字,而定义成parameter变量,方便读程序和以后的引用.<br>
第三,wire temp={dout,dout};在定义变量时最好不要赋值.赋值用连续赋值语句<br>
第四,always @(posedge clk or negedge nrst)<br>
if (~nrst)&nbsp; &nbsp;&nbsp; &nbsp; dout&lt;=0;<br>
else if (sel==1) dout&lt;=din;<br>
else&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; dout&lt;=temp;<br>
alwyas后面的语句群要用begin-end,if/else后面即使是单语句,最好也用begin-end,养成习惯,因为if/else后如果没有一个过程块,那么在有多条语句时只执行一句的.

CTT 发表于 2010-6-28 09:22:26

受教了,谢谢
页: [1] 2 3
查看完整版本: testbench的写法,这样写是规范的么?