SparkRoad测评(4)-组合电路与latch测试
[复制链接]
对于组合逻辑电路是要避免latch的产生的。我在上期的测试中用了一个显示8进制的查找表,目的是为本期的测试做个铺垫。那么本期的测试就是检验安路软件对latch的探测能力。
第一步:将上期的3-8查找表代码写入IDE进行综合。
module segtest(a,b,c,x,out);
input a,b,c;
output reg [7:0]out;
output x;
assign x=1'b0;
always @({a,b,c})
case({a,b,c})
3'd0:out = 8'hc0;
3'd1:out = 8'hf9;
3'd2:out = 8'ha4;
3'd3:out = 8'hb0;
3'd4:out = 8'h99;
3'd5:out = 8'h92;
3'd6:out = 8'h82;
3'd7:out = 8'hf8;
//4'd8:out = 8'hf8;
//4'd9:out = 8'hf8;
endcase
endmodule
查看RTL报告:
看到latch数量为0,说明综合是没有问题的。
第二步:将测试代码写入ide进行综合。
module segtest(a,b,c,d,x,out);
input a,b,c,d;
output reg [7:0]out;
output x;
assign x=1'b0;
always @({a,b,c,d})
case({a,b,c,d})
3'd0:out = 8'hc0;
3'd1:out = 8'hf9;
3'd2:out = 8'ha4;
3'd3:out = 8'hb0;
3'd4:out = 8'h99;
3'd5:out = 8'h92;
3'd6:out = 8'h82;
3'd7:out = 8'hf8;
4'd8:out = 8'h80;
4'd9:out = 8'h90;
// default:out = 8'hc0;
endcase
endmodule
测试代码将关键的default:out = 8'hc0;代码注释掉然后综合。打开rtl报告。
看到多出来8个latch。通过测试软件可以探测latch。
单三步,将关键语句的注释取消。使得default:out = 8'hc0;使能在进行综合。
这次的结果latch为0了。
测试总结:
通过测试可以发现软件对于latch的探测是没有问题的,但是这个能力还是有进一步的提高空间的,在使用一些大厂的软件时,软件不但能够发现不必要的latch,还能够给出警告,提示编程用户是否应该对电路进行改进。在实际的设计中往往是组合逻辑与时序逻辑并存的情况,这种方案只能分成单元进行测试了。
|