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

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

这篇文章带来ECE111第八节课的Slides以及自己的一些补充。

该课程的网站如下:


https://link.zhihu.com/?target=http%3A//cwcserv.ucsd.edu/~billlin/classes/ECE111/index.php


这节课的内容比较轻松,主要是讨论SV的一些注意事项和“奇巧淫技”。希望对大家有所帮助。

首先是打印字符,格式和C语言非常像。在仿真当中我们经常需要用到该关键词,将我们需要的信息打印到屏幕上,这样可以尽量少的去看波形,毕竟波形看久了眼睛疼。除了$display 以外。$write以及$monitor也是我们需要掌握的。write和display的区别在于不会自动插入换行符,该关键词其实用的很少。而monitor只有在表达式的值发生改变的时候才会去打印,该关键词可以有效地帮助我们debug需要重点关注的信号,很多时候也用来打印时间信息。

然后介绍了一些转义字符,这些只有换行符和制表符用的较多,其余的我也没用过,了解即可,真的有需要的时候再去查display关键字用法。

对于我们要完成的SHA256算法,可以在每一轮运算,都将新的A~H寄存器打印到屏幕。从而方便我们比对,避免了去看波形。上面分别使用了write和display。这里意思是想把A~H和t(常量 �� )打印到同一行中。

然后画两页介绍了Modelsim的命令行用法。我们使用vlib命令创建新文件夹,然后使用vlog进行编译,vsim进行仿真。这里执行这些命令本质就是在CMD命令行执行,所以确保这些命令可以在PATH路径下找到,通常我们安装的时候已经选择好了,会自动安装到PATH路径。如果没有的话可以手动添加,不会的可以自行搜索一下,这里不详细介绍。

然后介绍了function更多的用法。回顾一下"funciton"。它只能用在组合逻辑中,我们将它视作和"always_comb"一样的逻辑块。但是有一点需要小心。

我们像往常一样写了这样的一个function。这一段function用于实现三个数的相加。但是有什么问题呢?SV或Verilog的function描述的是电路,而不是软件编程语言的一段程序。该function会生成三输入一输出的加法器。同时还会有"t"这个中间信号。所以我们调用的时候,是共享该信号的。这一点需要非常小心。

我们可以通过“automatic”关键词来规定逻辑变量之间是真正独立的。每次调用该模块使用的都是不同的“t”。这样就避免了潜在的问题。

上面这个图说明,function可以使用在其外部的信号变量。当然我不是很推荐这样做。最好再显式的定义一下输入,这样模块结构比较清晰。此外当信号名一样的时候,编译器大概率不会报错,会当做C中的形参和实参那样处理,这点也需要注意。

上面这两个图是相对高阶的用法,我们可以不写函数名=xxxxx运算。而是直接用return来代替。或者通过function void关键字,同时定义好输入输出。这样也可以进行输出。这两种方法都不推荐,这里只推荐大家按照最开始学的方式写function。IC行业不使用新东西反而是最安全可靠的。

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