SystemVerilog/Verilog的语法
文章平均质量分 90
SystemVerilog/Verilog应用中遇到的语法问题
小苍蝇别闹
FPGA开发和电路设计;集成电路测试
展开
-
SystemVerilog/Verilog的testbench中文件的写入和读取操作
在Testbench中很可能需要文件的读写操作,在可综合的设计中也可能会用到文件写入。SystemVerilog/Verilog提供的文件写入读取方法并不多,主要有两类。第一类是writememb/writememh/readmemb/readmemh,第二类是$fscanf/$fwrite。第一类用法简单,但是功能弱,文件读取也不支持多维数组;第二类用法复杂一点,功能相对强大,配合循环语句可以处理多维数组。1. writemem[b|h]/readmem[b|h]writemem[b|h]主要原创 2021-01-11 23:34:24 · 19870 阅读 · 0 评论 -
Systemverilog中的iff事件控制
使用systemverilog已经有一段时间了,主要是其中的部分新特性能够简化代码的编写,比如interface、支持多维端口等。为了进一步深入学习systemverilog,最近抽空更广泛的学习了一些systemverilog的内容。本文记录一下Systemverilog中的事件控制和sequence控制相关内容的学习情况。1. 事件控制1.1 iffSystemverilog在@事件控制中添加了iff修饰词,只有当iff后的条件为真时,@事件才会触发。注意,iff可以在always和alwa原创 2020-12-14 10:59:09 · 13151 阅读 · 3 评论 -
在Verilog/SystemVerilog中使用fork/join的注意事项
fork/join是Verilog中常用的语句。该语法在SystemVerilog中添加了join_any和join_none两个关键字,使fork的行为发生了变化。本文将比较全面的介绍fork的用法,其中不使用join_any和join_none关键字的时候,其用法和Verilog中一致。1. fork块中的begin/end块 在fork块中,begin和end之间的语句会顺序执行,如果没有begin和end,则各条语句会并发执行。看下面的例子。在fork块中有A、B两个任务,由于...原创 2020-06-08 18:25:44 · 11268 阅读 · 0 评论 -
慎用systemverilog的语法新特性——“++”、“--”等操作符
SystemVerilog相对于Verilog添加了很多新特性,比如使用起来非常方便的累加++或递减--操作符。有这么好的变化,再也不用傻傻的写cnt <= cnt + 1了。在一个新项目中毫不犹豫的用了起来。always_ff @ (posedge clk) begin if( rst ) cnt <= 4'h0; else if( wr_tran...原创 2020-04-20 11:10:32 · 1587 阅读 · 0 评论 -
变量拼接中遇到的奇怪问题——使用运算符导致实际位宽与期望位宽不符
以下方式是仿真中常常用到的数据拼接定义方式。 data = {`TC'h01,`FIX'h0, `FINE'h0, `COARSE'h01}; 其中TC/FIX/FINE/COARSE是通过`define定义的。在我最近的项目中,有一个变量需要拆分,我使用了下面的定义方式。 data = {`TC'h01, `CMP_MODE/2'h0, `FIX'h0, `...原创 2020-04-18 17:31:57 · 445 阅读 · 0 评论