关于parallel_case和full_case的使用
2017-05-31 12:45
176 查看
在写RTL的时候,常常会用到CASE语句,但是case语句实际综合后,产生的逻辑变化比较多,parallel_case和full_case主要就是用来控制综合器把case语句综合成什么硬件逻辑。
首先说说parallel_case。
例子一:
case (CASE_SIGNAL)
begin
CASE1: A = B;
CASE2: A = C;
default: A = D;
end
endcase
在这个case语句中,如果没有parallel_case的限制,case的条件是有优先级的,CASE1的优先级最高,CASE2次之,default最后。产生这样的优先级,是要用相应的硬件产生的。但是有些设计中,case语句不需要优先级,不同的case不会同时产生,那么综合器生成的优先级逻辑就是冗余的了。为了去除这些冗余逻辑,就用
case (CASE_SIGNL) // synopsys parallel_case
来告诉综合器,不需要产生优先级逻辑,而缩小了硬件的规模。但产生的副作用是,设计者要保证CASE1和CASE2不会同时发生,否则A会被赋予一个不确定的值。
再来就是full_case。
例子二:
case (CASE_SIGNAL)
begin
CASE1: A = B;
CASE2: A = C;
end
endcase
在例子二中,没有default的选项,综合器会产生一个latch,因为CASE都不成立时,A要保持上一次的值。然而通常设计者是不希望产生这个latch的。这时候,使用
case (CASE_SIGNL) // synopsys full_case
来告诉综合器,所有的CASE已经覆盖,不需要自动产生latch。
但产生的副作用是,设计者要保证只会有CASE1和CASE2,不会有CASE3的出现,否则A会是一个不确定的值。
其实full_case和default分支的作用是一样的,在case语句中只要有full_case或者default就可以了。
首先说说parallel_case。
例子一:
case (CASE_SIGNAL)
begin
CASE1: A = B;
CASE2: A = C;
default: A = D;
end
endcase
在这个case语句中,如果没有parallel_case的限制,case的条件是有优先级的,CASE1的优先级最高,CASE2次之,default最后。产生这样的优先级,是要用相应的硬件产生的。但是有些设计中,case语句不需要优先级,不同的case不会同时产生,那么综合器生成的优先级逻辑就是冗余的了。为了去除这些冗余逻辑,就用
case (CASE_SIGNL) // synopsys parallel_case
来告诉综合器,不需要产生优先级逻辑,而缩小了硬件的规模。但产生的副作用是,设计者要保证CASE1和CASE2不会同时发生,否则A会被赋予一个不确定的值。
再来就是full_case。
例子二:
case (CASE_SIGNAL)
begin
CASE1: A = B;
CASE2: A = C;
end
endcase
在例子二中,没有default的选项,综合器会产生一个latch,因为CASE都不成立时,A要保持上一次的值。然而通常设计者是不希望产生这个latch的。这时候,使用
case (CASE_SIGNL) // synopsys full_case
来告诉综合器,所有的CASE已经覆盖,不需要自动产生latch。
但产生的副作用是,设计者要保证只会有CASE1和CASE2,不会有CASE3的出现,否则A会是一个不确定的值。
其实full_case和default分支的作用是一样的,在case语句中只要有full_case或者default就可以了。
相关文章推荐
- 关于parallel_case和full_case的使用
- 关于parallel_case和full_case的使用
- 关于parallel_case和full_case的使用
- 关于parallel_case和full_case的使用
- 关于sqlserver中查询语句中嵌套case语句使用方法
- 关于CASE中使用聚合函数时的一点经验
- 各个数据库的差异及使用(关于case和time functions)
- 关于switch。。case的使用中break的重要性
- 关于fullPage.js使用方法
- 实验四第4题:关于switch...case分支语句的使用
- switch 语句关于case的使用
- 请教一下各位大侠,关于sql语句中使用case替换where条件的查询出现空行的原因
- 关于使用游标更新数据和Case语句进行更新的实现过程
- full_case & parallel_case
- 关于CASE WHEN的 使用方法
- 论坛短信中一个关于ADOMD使用的答复。
- 关于BLOG中使用计数器
- 关于“使用客户端行为来丰富 ASP.NET 的 DataGrid”的bugs
- 手册中关于怎样使用TQuery 的误导
- 关于AnsiSting的使用大全