作者zxvc (执着)
看板Electronics
标题Re: [问题] 一些verilog的问题...
时间Fri Jan 1 21:49:23 2010
: → ksmrt0123:刚用quartus试, 合成两种assignment都有的always电路 01/01 21:12
: → ksmrt0123:没什麽问题 01/01 21:12
: → ksmrt0123:其实应该不会合不出来 只是合出来的电路常与预期的不同 01/01 21:15
: → ksmrt0123:只要保持良好的coding style, 就不需去烦恼这些问题了 01/01 21:16
抱歉,我记错了。
正确来说应该是,对同一reg不能一下用nonblocking、一下用blocking assignments,
大多数synthesizer不能合成。例如以下code在Xilinx ISE 8.2i会出现error
Cannot mix blocking and non blocking assignments on signal <o>.
module Test(o, a, b);
output reg o;
input a, b;
always@(*)
begin
if(a & b)
o = 0;
else
o <= 1;
end
endmodule
但这样则没问题:
module Test(o, o2, a, b);
output reg o, o2;
input a, b;
always@(*)
begin
if(a & b)
begin
o = 0;
o2 <= 0;
end
else
begin
o = 1;
o2 <= 1;
end
end
endmodule
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.139.204.14
※ 编辑: zxvc 来自: 220.139.204.14 (01/01 21:50)
1F:推 appendixisu:推~~~ 01/03 08:32
2F:→ ksmrt0123:有趣的是 上面那段code在Quartus2还是ok 01/03 22:12
3F:→ ksmrt0123:个人觉得altera的作法比较好: coding style的事让 01/03 22:13
4F:→ ksmrt0123:linter或是user自己楚理就好 compiler无须涉入太深 01/03 22:14