zl程序教程

您现在的位置是:首页 >  其它

当前栏目

priority case语句

语句 case Priority
2023-09-14 09:10:03 时间

priority case语句

一个priority case可能具有多个条件选项匹配
priority case语句指定:

  • 至少有一个条件选项的值与条件表达式匹配
  • 如果有多个条件选项的值与条件表达式匹配,必须执行第一个匹配分支

修饰符priority表示设计者认为两个或多个条件选择表达式可以同时为真,并且条件选项的顺序非常重要。

//设计者指定了中断请求信号译码顺序的优先级,
//irq0具有最高优先级

always_comb
	priority case(1'b1)
		irq0:irq=4'b0001;
		irq1:irq=4'b0010;
		irq2:irq=4'b0100;
		irq3:irq=4'b1000;
	endcase	

因为模型已经明确指出了必须按顺序对条件选项求值,所以如果多个条件选项匹配,所有的软件工具都会按照给出的编码优先级执行。

注意:综合编译器可能对条件选择项求值的优化与RTL代码
不同,即使使用了优先级条件

一些综合编译器如果发现条件选择项是互斥的,就很可能自动优化priority case语句来并行求值。

防止无意中产生锁存逻辑
priority case语句必须指明所有条件
当case、casex或casez语句使用priority修饰符后,在运行期出现的条件表达式的所有值都至少要和一个条件选项匹配。如果没有匹配的条件选项,工具会产生运行期警告。这样就保证了在case语句求值时,有且只要一个分支执行。即case语句组合逻辑实现,不会产生锁存器。