liuiang的个人空间 https://blog.eetop.cn/liuiang [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

SystemVerilog语言简介(五)

已有 2397 次阅读| 2006-7-26 13:29

天气: 阴雨
心情: 高兴

17. 唯一性和优先级决定语句

Verilog中,如果没有遵循严格的编码风格,它的if-elsecase语句会在RTL仿真和RTL综合间具有不一致的结果。如果没有正确使用full_caseparallel_case综合指令还会引起一些其它的错误。

SystemVerilog能够显式地指明什么时候一条决定语句的分支是唯一的,或者什么时候需要计算优先级。我们可以在ifcase关键字之前使用uniquerequires关键字。这些关键字可以向仿真器、综合编译器、以及其它工具指示我们期望的硬件类型。工具使用这些信息来检查ifcase语句是否正确建模了期望的逻辑。例如,如果使用unique限定了一个决定语句,那么在不希望的case值出现的时候仿真器就能够发布一个警告信息。

bit [2:0] a;

unique if ((a==0) || (a==1)) y = in1;

else if (a==2) y = in2;

else if (a==4) y = in3; // 3567会引起一个警告

priority if (a[2:1]==0) y = in1; // a01

else if (a[2]==0) y = in2; // a23

else y = in3; // 如果a为其他的值

unique case (a)

  0, 1: y = in1;

  2: y = in2;

  4: y = in3;

endcase // 3567会引起一个警告

priority casez (a)

  2'b00? : y = in1; // a01

  2'b0?? : y = in2; // a23

  default : y = in3; //如果a为其他的值

endcase

 

18. 底部检测的循环

Verilog包含forwhilerepeat循环,这几个循环都是在循环的起始处检测循环条件。SystemVerilog加入了一个do-while循环,这种循环在执行语句的结尾处检测循环条件。

19. 跳转语句

在语句的执行过程中,C语言提供了几种方式来跳转到新的语句,包括:returnbreakcontinuegoto。在Verilog中除了通过使用disable语句跳转到语句组的尾部外,没有提供任何其它跳转语句。使用disable语句执行中止和继续功能要求加入块的名字,并且会产生不直观的代码。SystemVerilog加入了C语言的breakcontinue关键字,这两个关键字不要求使用块名字。另外,SystemVerilog还加入了一个return关键字,它可以用来在任何执行点上退出一个任务或函数。

l         break:退出一个循环,与C语言相同;

l         continue:跳转到一个循环的尾部,与C语言相同;

l         return 表达式:退出一个函数;

l         return:退出一个任务或void类型的函数。

SystemVerilog没有包含C语言中的goto语句。


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 1

    好友
  • 3

    获赞
  • 9

    评论
  • 1911

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-8 02:22 , Processed in 0.021577 second(s), 13 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部