//synophys parallel_case和//synophys full_case是综合指令,用来控制综合器把case语句综合成什么硬件逻辑。
1、//synophys parallel_case
eg:
case (CASE_SIGNAL)
begin
CASE1: A = B;
CASE2: A = C;
default: A = D;
end
endcase
在这个case语句中,如果没有//synophys parallel_case的限制,case的条件是有优先级的,CASE1的优先级最高,CASE2次之,default最后(case语句从上至下进行判断与执行)。产生这样的优先级,是要用相应的硬件产生的。但是有些设计中,case语句不需要优先级,不同的case不会同时产生,那么综合器生成的优先级逻辑就是冗余的了。为了去除这些冗余逻辑,就用 // synopsys parallel_case来告诉综合器,不需要产生优先级逻辑,而缩小了硬件的规模。但产生的副作用是,设计者要保证CASE1和CASE2不会同时发生,否则A会被赋予一个不确定的值。
case (CASE_SIGNAL) // synopsys parallel_case
begin
CASE1: A = B;
CASE2: A = C;
default: A = D;
end
endcase