快速入门数字芯片设计,UCSD ECE111(八)更深入了解SystemVerilog(二)

简介: 快速入门数字芯片设计,UCSD ECE111(八)更深入了解SystemVerilog(二)

这门课接下来会花30页slides的篇幅介绍可综合的SV语法。下面的报告来自Synopys User Group meeting in Silicon Valley in 2013.

链接如下


Slidessutherland-hdl.com/papers/2013-SNUG-SV_Synthesizable-SystemVerilog_presentation.pdf



Paperssutherland-hdl.com/papers/2013-SNUG-SV_Synthesizable-SystemVerilog_paper.pdf


标题就非常霸气。“打破SystemVerilog仅用于验证的荒谬说法”。

首先梳理一下大纲:

  • 揭穿一个关于SystemVerilog的荒谬说法
  • SV中哪些是可综合的
  • 这些可综合的结构为什么是重要的
  • Design Compiler以及Synplify-Pro是如何支持SV综合的
  • 15个用于可综合SV的编码习惯

So,Let's get started!

第一个误区,Verilog是一门设计语言,而SV是一门验证语言,综合器不支持SV。

  • 非常错误的说法。SV相较于传统的Verilog而言,既提高了设计能力,有提高了验证能力。
  • 从技术角度出发,现在已经没有Verilog这个东西了。IEEE在2009年将其更为Systemverilog。所以我们可以认为我们平常写的Verilog,都是SV的一部分。
  • VCS、DC、Synplify-Pro对于SV的RTL建模有着非常好的支持。

上述是SV增加的一些特性。

SV的设计目标如下:

  • 用更少的代码实现更多的功能
  • 降低冗余度
  • 降低编码错误导致的风险

新增加的可综合数据类型,以下三种用的非常多

  • logic——4态逻辑,用户自定义长度,用于替代reg变量
  • enum——拥有一组特定编码的变量,上节课其实已经详细介绍了。
  • int——32bit的2值逻辑变量,用于循环操作,替代integer。因为我们做循环,只有0或者1,x和高阻态其实是不起作用的,用int可以节省资源开销,并且不传播X态

还有一些其他的变量,用的比较少。这里不详细介绍。但是有一点需要特别注意,二值变量除了int用作循环以后,其它的不要用在可综合模块中,不然无法传播X态,导致Debug不出潜在的问题,很危险(比如忘了写赋初值的逻辑,这种2态会默认0,但实际上这是很危险的,实际电路中这是一个不确定的状态)。

传统的Verilog对于端口有着严格和令人迷惑的规则:

  • 输入端口必须是线网类型(wire)
  • 输出根据赋值逻辑块的不同使用reg或者wire(尤其是reg逻辑变量,实际上并不一定生成寄存器,这对于初学者而言非常恶心,很容易导致困惑)

SV中就简单多了,一律用logic就可以,SV会自动解析这是个变量还是一个线网。(在多驱和双向逻辑中需要用wire,但是初学者前期应该接触不到,这里暂时不用管)

接下来介绍了两页enum,上节课已经介绍过了,不重复介绍。

然后介绍了Struct关键词,用于将多组变量绑定在一起。我简单介绍一下其应用场景,比如寄存器共有32bit,但是有不同的filed表示不同的意义。这种情况就可以用struct,来显式的去说明,而不用赋值的时候要小心翼翼的去给指定bit赋值。(这些场景还是很好用的,但是很有可能公司领导不让你用这个关键词,-_-)。

typedef用的不太多,大部分情况是用于struct的重命名。



目录
相关文章
|
存储 安全 区块链
快速入门数字芯片设计,UCSD ECE111(十)比特币加密(一)
快速入门数字芯片设计,UCSD ECE111(十)比特币加密
91 0
|
C语言 芯片 SoC
快速入门数字芯片设计,UCSD ECE111(一)Introduction(下)
快速入门数字芯片设计,UCSD ECE111(一)Introduction(下)
123 1
|
编译器 芯片
快速入门数字芯片设计,UCSD ECE111(二)SystemVerilog(下)
快速入门数字芯片设计,UCSD ECE111(二)SystemVerilog(下)
99 0
|
算法 编译器 C语言
快速入门数字芯片设计,UCSD ECE111(八)更深入了解SystemVerilog(一)
快速入门数字芯片设计,UCSD ECE111(八)更深入了解SystemVerilog
105 0
|
算法 芯片
快速入门数字芯片设计,UCSD ECE111(十二)Testbench和VHDL(三)
快速入门数字芯片设计,UCSD ECE111(十二)Testbench和VHDL(三)
88 0
|
算法 芯片
快速入门数字芯片设计,UCSD ECE111(十二)Testbench和VHDL(一)
快速入门数字芯片设计,UCSD ECE111(十二)Testbench和VHDL
118 0
|
存储 安全 编译器
快速入门数字芯片设计,UCSD ECE111(五)Project1&2(二)
快速入门数字芯片设计,UCSD ECE111(五)Project1&2(二)
80 0
|
存储 芯片 异构计算
快速入门数字芯片设计,UCSD ECE111(三)System Verilog时序逻辑(上)
快速入门数字芯片设计,UCSD ECE111(三)System Verilog时序逻辑
103 0
|
存储 芯片
快速入门数字芯片设计,UCSD ECE111(三)System Verilog时序逻辑(下)
快速入门数字芯片设计,UCSD ECE111(三)System Verilog时序逻辑(下)
97 0
|
机器学习/深度学习 调度 芯片
快速入门数字芯片设计,UCSD ECE111(九)FPGA vs ASIC(一)
快速入门数字芯片设计,UCSD ECE111(九)FPGA vs ASIC
100 0