本帖最后由 changan1216 于 2013-4-22 12:39 编辑
一个对组合逻辑always语句测试的简单代码,如下: reg out; always @(ctl) out = in; 综合后形成的实际电路结构,以及仿真波形却等效于如下代码: wire out; assign out = in; 综合后控制变量ctl被优化掉了,实际电路如下: 仿真波形如下: 前仿真:可以实现always @(ctl)中,敏感信号ctl对语句内代码的触发 后仿真:敏感信号ctl完全不起作用 Quartus+ModelSim / ISE 均是同样结果 求解:组合逻辑always @(<signal>)语句的敏感信号为何会被综合器优化掉? 完全失去代码本来目的....... 不知原因为何如此.求高手解答 源代码如下: ---------设计模块代码------------------- module t1(in, out, ctl); input in, ctl; output out; reg out; always @(ctl) out = in; // wire out; // assign out = in; endmodule ----------测试模块代码---------------- `timescale 1ns/1ps module t1_tb(); reg in, ctl; wire out; t1 t1_inst( .in (in), .out(out), .ctl(ctl) ); initial begin in = 1; ctl = 1; #270 ctl = 0; end always #50 in = ~in; endmodule |