case代码综合的问题(full_case和parallel_case)

  • case代码综合的问题full_case和parallel_case
  • casez可以实现带优先级的逻辑
  • case casez casex综合后的电路有什么区别

case代码综合的问题(full_case和parallel_case)

eetop论坛里有人问了下面这个问题:case综合报告里的full和parallel,分别代表什么意思?

之前觉得,这个问题没有必要,不是warning,也不是error,何苦分析。
后来有人解答后,有所收获,特此记录。
如果自己找原因,可以搜索关键词“verilog case full”;也可以利用sysnopsys文档,搜索关键词full_case,在dcug.pdf(dc userguide)里。

Statistics for case statements in always block at line 187 in file
        '/home/IC/project/cpu_test/risc_cpu_new.v'
===============================================
|           Line           |  full/ parallel  |
===============================================
|           188            |    auto/auto     |
===============================================

下面的解释,来自《full_case_parallel_case_the_evil_twins_of_verilog.pdf

full_case=no时,意味着case分支不全;
full_case=user时,意味着case分支不全;但是RTL代码,对case段加了synopsys综合工具才能识别的“// synopsys full_case”,即RTL存在latch风险,但会通知synopsys综合工具,“虽然分支不全,但不关心没指定case分支的输出值”。
full_case=auto时,意味着case分支齐全;RTL代码完美。

parallel_case完全类似。不过不在意味着case分支是否齐全,而是意味着case分支是否存在交叉满足情况。
如果case分支存在交叉满足情况,那么综合生成的电路会存在优先级,导致结构复杂,浪费器件。

总之,这两个情况,建议从RTL设计代码里解决。

原贴:
新人问代码问题 - FPGA/ASIC论坛讨论 - FPGA|CPLD|ASIC论坛 - 中国电子顶级开发网论坛(EETOP) 最大最火的半导体、集成电路、IC设计、嵌入式设计、电子电路、电子工程师论坛
http://bbs.eetop.cn/viewthread.php?from=notice&tid=628683

casez可以实现带优先级的逻辑

一般优先级逻辑,是采用if-else实现的。
case的项,是需要一一对应的。
casez的项,如果有z或者?的话,代表高阻值或者不关心的值。
casex的项,如果有x的话,代表不定态。

数字电路设计之casez,case,casex的用法 - 博客频道 - CSDN.NET
http://blog.csdn.net/c602273091/article/details/41541701

case casez casex综合后的电路,有什么区别?

几乎没有任何区别。
不过要注意,case的项,不能包含?、x、z,否则会把该分支定义为不可综合,而忽略这个分支的代码逻辑。

关于Verilog中case casex casez的综合的不同点synthesis difference_yebai445791253_新浪博客
http://blog.sina.com.cn/s/blog_6c7b6f030101hc9p.html

你可能感兴趣的:(verilog,verilog)