verilog & systemverilog 记录

Verilog

Verilog仿真时在外部调用某个函数内部的task

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

表达式位长

参考《verilog2005标准》、《verilog编程艺术》

规则

self-determined expression

A self-determined expression is one where the bit length of the expression is solely determined by the expression itself—for example,an expression representing a delay value
自决定表达式,就是表达式的位长完全由表达式本身决定——例如,表示延迟值的表达式

在这里插入图片描述

context-determined expression

A context-determined expression is one where the bit length of the expression is determined by the bit length of the expression and by the fact that it is part of another expression. For example, the bit size of the righthand expression of an assignment depends on itself and the size of the left-hand side
上下文决定表达式,就是表达式的位长既由表达式决定,也由这样的事实决定(表达式本身也是另一个表达式的一部分)。 例如,赋值RHS的位长既依赖于它本身,也依赖于LHS的位长

在这里插入图片描述

几个例子

在计算表达式时,中间结果就取操作数的最大位位长 (如果是赋值,也包含LHS),所以计算时要防止中间结果出现丢失。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

《verilog编程艺术》一书中补充的例子
在这里插入图片描述

符号表达式

规则

在这里插入图片描述

中文版
在这里插入图片描述

几个例子

在这里插入图片描述

在verilog中使用断言

在verilog中使用下面的方式进行断言,

initial begin
    if (AXIS_PCIE_DATA_WIDTH != 64 && AXIS_PCIE_DATA_WIDTH != 128 && AXIS_PCIE_DATA_WIDTH != 256 && AXIS_PCIE_DATA_WIDTH != 512) begin
        $error("Error: PCIe interface width must be 64, 128, 256, or 512 (instance %m)");
        $finish;
    end
end

systemverilog

闲暇之际,抽了点时间了解了一下systemverilog。由于不做测试,重点看了一下可综合的部分语法。

参考书

在这里插入图片描述

语法小结

  • 四态变量、二态变量的相关知识点
  • logic能够代替大多数的reg、wire,但也要注意,
    • 当用于inout端口声明、多重驱动时,wire不可以用logic替代
    • wire sig = A&b;的写法与logic sig = A & B;并不一致,后者仅仅表示初始化,不能代表连续赋值
  • 较简单的用法:设计时,组合逻辑采用always_comb,时序逻辑采用always_ff
  • package的用法:和VHDL中package类似,可以包含函数定义(function)、类型声明(typedef、enum)、常量定义(parameter、const);使用package时,import xxx_pkg:: *
  • interface不能在package中定义,可以在一个文件中单独定义,也可以在svh文件中定义,使用include语句包含进来;注意modport的用法
  • 注意type parameter的用法
  • 注意数组packed和unpacked的区别;packed的数组可以直接赋值给一个vector

几点考虑

  • ISE不支持systemverilog,vivado支持systemverilog,如此的话,在不考虑使用第三方综合工具的情况下,使用SV的设计无法移植到7系列以下的器件中,这点很值得权衡
  • 当SV的设计中不包含IP时,vivado综合出的edn网表可以在ISE中使用(仅仅做过简单测试,不代表所有情况)。考虑到新版本的vivado对于某些原语增加了新的属性,因此,如果网表想在ISE中使用的话,可以尝试使用ISE14.4对应的vivado2012.4版本
  • 目前来看,systemverilog的接口部分,VHDL无对应语法;systemverilog的编译预处理指令,VHDL无对应语法(这个的确很有用)。其他的部分,package、自定义类型、enum等特性,VHDL还是很好用的
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Verilog and SystemVerilog Gotchas》是一本关于Verilog和SystemVerilog语言的电子书。它旨在帮助读者避免在编写Verilog和SystemVerilog代码时常见的陷阱和错误。 这本电子书对于那些对Verilog和SystemVerilog语言有一定了解的人来说尤为有用。它研究了许多常见的问题和错误,并提供了简明扼要的解释和示例代码。 《Verilog and SystemVerilog Gotchas》首先介绍了Verilog语言的基础知识,包括模块化设计概念、数据类型、运算符和控制结构等。然后,它讨论了一些常见但容易被忽视的问题,例如在条件语句中的敏感列表、并发语句中的竞争条件和时序不确定性。 接下来,这本电子书转向SystemVerilog语言,介绍了其扩展功能,如对象导向编程、断言和宏定义。它还强调了一些SystemVerilog中常见的问题,如虚拟接口的使用和任务和函数的调用方式。 此外,《Verilog and SystemVerilog Gotchas》也涉及了Simulator和Synthesizer之间的一些差异和注意事项。它帮助读者理解不同的仿真和综合工具之间的差异,并提供了一些建议,以避免由于这些差异而引起的问题。 总的来说,这本电子书是一种很好的资源,能够帮助工程师和学生更好地理解和使用Verilog和SystemVerilog语言。它提供了许多实用的建议和示例,可以帮助读者避免在编写代码时常见的陷阱和错误。无论是初学者还是有经验的用户,都可以从这本书中获益,提高他们在编写Verilog和SystemVerilog代码时的效率和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值