在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 8325|回复: 11

[原创] 断言可以写在verilog的可综合代码中吗 ?

[复制链接]
发表于 2019-5-17 07:50:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
断言是否可以写在verilog的可综合代码中吗 ?网上找不到相关说明,
如果可以写在可综合代码中,综合工具是如何识别出 不可综合代码并忽略的 ?


发表于 2019-5-17 08:51:40 来自手机 | 显示全部楼层
当然可以,两种方法:1. 把断言放在由宏保护的块中;2. 把断言放在//synopsys translate_off的特殊注释以后的代码行中,综合器遇到该注释就跳过直到遇到//synopsys translate_on特殊注释后继续读取rtl代码进行编译。
 楼主| 发表于 2019-5-17 09:37:36 | 显示全部楼层
本帖最后由 american007 于 2019-5-17 09:40 编辑


saipolo 发表于 2019-5-17 08:51
当然可以,两种方法:1. 把断言放在由宏保护的块中;2. 把断言放在//synopsys translate_off的特殊注释以后 ...


感谢,
我看到的都是一些FPGA项目代码,没看到代码里写断言,基本都是可综合语句,顶多加个延时#1 之类的,
请问 有没有相关的 好书或资料,网上这方面的资料 感觉很少啊

发表于 2019-5-17 11:27:48 来自手机 | 显示全部楼层


american007 发表于 2019-5-17 09:37
感谢,
我看到的都是一些FPGA项目代码,没看到代码里写断言,基本都是可综合语句,顶多加个延时#1 之类的 ...


asic/soc的rtl设计中添加断言一般使用断言库,synopsys的vcs和cadence的ius都提供了这样的库,当然你也可以从Accellera免费下载到库源码,vcs,ius和Accellera的的断言库接口用法基本一致,极少差异。
断言库中的各种基本checker都很好理解,除了极个别checker极其奇葩用法,你需要亲自写一点代码运行看效果才能更好理解。其实常用的checher也就那么几个。
 楼主| 发表于 2019-5-18 07:27:46 | 显示全部楼层
感谢,另外问下:是不是verilog只有$monitor  $strobe之类的显示打印语句,而没有所谓的assert之类的断言语句,只有systemverilog才有assert ,assert ... with这样的断言语句?
你所说synopsys的vcs的断言库,是在systemverilog的assert ,assert ... with之外,支持其他类型的断言,还是说 synopsys的vcs的 支持了 systemverilog所提供的断言?
发表于 2019-5-18 11:19:36 来自手机 | 显示全部楼层


american007 发表于 2019-5-18 07:27
感谢,另外问下:是不是verilog只有$monitor  $strobe之类的显示打印语句,而没有所谓的assert之类的断言语 ...


verilog提供的打印语句除了$monitor,$strobe,$display外,在verilog标准的另一部分pli中可以使用诸如vpi_printf等更多打印方式。(题外话,verilog标准还有一半是关于编程语言接口pli的,所以有人吹嘘精通verilog你完全可以问他懂不懂pli,不懂的话完全可以怼他,哈哈,开个玩笑)
assert本身不是verilog的关键字,其最初是来自于PSL语言,后来被加入SystemVerilog,当然你在.v文件中也是可以使用assert的,前提是你的编译选择要加上-sverilog或者-sv。
关于synopsys的断言库,分为两个版本:
1. .v版本,或者叫module版本;
2. .sv版本。
两根版本实现方式都是用最基本的sva语法,如sequence, property, match, ##, |->,甚至assume等基本语法元素实现了assert_next等诸多检查器。你可以理解为用sva写的断言aip,可以查看源码,但比较难以理解。
不知道我又没有解释清楚?
发表于 2019-5-18 15:44:49 | 显示全部楼层


american007 发表于 2019-5-17 09:37
感谢,
我看到的都是一些FPGA项目代码,没看到代码里写断言,基本都是可综合语句,顶多加个延时#1 之类的 ...


https://blog.csdn.net/zhajio/article/details/80005557
你可以看看这个博主断言相关的帖子,翻译的是那本经典的书《Systemverilog assertions and functional coverage》.
 楼主| 发表于 2019-5-20 12:04:06 | 显示全部楼层
学习一下,感谢
发表于 2021-7-8 09:18:11 | 显示全部楼层
可以使用define宏定义标识符,然后使用ifdef和endif对你加在rtl中的断言语句进行指定编译
发表于 2022-1-11 10:41:37 | 显示全部楼层


saipolo 发表于 2019-5-17 11:27
asic/soc的rtl设计中添加断言一般使用断言库,synopsys的vcs和cadence的ius都提供了这样的库,当然你也可 ...


老哥太牛了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-19 04:09 , Processed in 0.024987 second(s), 5 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表