|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
本帖最后由 shxr 于 2011-1-19 14:30 编辑
不同的always里给同一个值赋值,一般是不可综合的,鄙人现在出现了一个这样的问题,,一个always里面的逻辑比较复杂,主要是状态机,当输入是一种很特别的情况时,在同一时刻对某一个变量赋不同值(0和1)了。。。仿真出来,这个变量总是选择了0.综合后的后仿结果和前仿一致,modelsim和DC都没有报错。
请问:
1、这种同一时刻赋不同值的情况出现的可能性特别特别小,就一个时钟周期的范围,而一个时钟周期相对于本设计的应用是很小很小的,可以忽略,但不知道由此综合出来的电路会不会有很大的潜在问题。或者没有什么大问题,可以跳过它。
2、此逻辑包含状态机a和状态机b,状态机a中给一变量f赋值了,f的值影响状态机b的状态,而b的状态是独立于a的,b中也对f进行赋值了。。。这种设计问题还是比较大的吧?
文字描述不太清楚,看例子。
例子如下:
always @(posedge clk or negedge rstn)
begin
if(~rstn)
........
else
begin
case(state)
IDLE:
state<=s1;
.........
s1 :
state<=s2;
.......
s2 :
state<=s3;
f<=1;
..........
s3 :
......
state<=s2;
endcase
case(second_state)
ss0: begin
if(f==1'b1)
second_state<=ss1;
else
second_state<=ss0;
end
ss1: begin
.............
second_state<=ss0;
f<=1'b0;
end
endcase
就是在一种特殊情况下,s2向s3跳转,ss1向ss0跳转,这种情况下,f的值就不确定了。这个情况在现实中发生的可能性很小.
希望各位大侠广开言路,只要与本帖子相关,欢迎讨论,谢谢各位了! |
|