testbench——常用语句与函数(日常更新)
来源:互联网 发布:简易地图绘制软件 编辑:程序博客网 时间:2024/06/14 07:11
1.`timescale
`timescale后跟计时单位 / 仿真精度,如在testbench前有
`timescale 1ns / 1ps此时仿真时钟语句
initial beginclk = 0;forever #5 clk = !clk;end
可以看到此时 #5 是延时 5ns,精度为1ps
修改为
`timescale 10ns / 1ns仿真结果
可以看到 #5 已经是延时50ns了
2.event
写的比较乱,就想到什么写什么吧。
event“事件”只能出现在testbench里,设定一个事件之后对事件进行监测,满足事件的话就出发相应的结果。很多时候事件是可以被其他代码替代的,使用它其实更多是为了让代码的可读性更高。
设定事件:event event_signal;
触发事件:#20 -> event_signal;
监测事件:@(event_signal) begin...end
代码测试
//eventevent event_test;reg event_signal1, event_signal2;initial begin#20 -> event_test;endinitial beginevent_signal1 = 0;event_signal2 = 0;@(event_test) beginfork beginrepeat (10) begin@(posedge clk)event_signal1 = $random;endend joinfork beginrepeat (10) begin@(posedge clk)event_signal2 = !event_signal2;endend joinendend
波形图:
3.force-release
force-release用来强制复制和释放端口,在仿真inout口的时候经常可以用到。
reg [1:0]force_test1, force_test2;initial beginforce_test1 = 0;force_test2 = 0;#10force_test1 = 1;assign force_test2 = 1;#10force force_test1 = 3;force force_test2 = 3;#10release force_test1;release force_test2;end仿真这段代码时候,由于assign语句的使用,产生了以外的结果。
modelsim的仿真结果:
ISE的仿真结果:
经过查证modelsim的波形应该是正确波形,对这个时我会再用其他仿真软件仿一下。
阅读全文
0 0
- testbench——常用语句与函数(日常更新)
- testbench常用函数
- Aggreagation 日常使用语句汇总(持续更新)
- 常用sql 语句与函数
- 学习日常英语(每天更新10+—)
- LinuxC学习日常——语句
- Oracle常用语句积累(慢慢更新)
- oracle常用基本语句(持续更新)
- postgresql 常用语句的整理(更新)
- SqlServer常用语句整理(后续更新)
- Oracle常用SQL语句(持续更新)
- db2常用语句更新
- 常用函数(不间断更新)
- 日常收集常用SQL查询语句大全
- testbench——信号的产生
- testbench——文件读入输出
- testbench——双向端口的仿真
- 日常随笔—常用小知识
- wireshark 学习更进一步 之网络性能分析
- HTML入门笔记10-em和strong标签
- 互联网协议入门(二)
- js变量前有 var 与没有的区别
- Spring 的本质系列
- testbench——常用语句与函数(日常更新)
- 合并两个排序的链表
- Java菜鸟学习日记14
- :first-child
- MySQL事务的隔离级别
- "explicit"
- OpenShift结构流程
- 泛型笔记
- JDBC基础编程、核心API