Verilog
function#
function [7:0] foo;
input [7:0] a, b, c, d, e;
if (e == 1)
foo = (a|b)&(c|d);
else
foo = 0;
endfunction
task#
和函数类似,不过没有返回值。一般用于简化仿真流程
task task_name;
// 声明输入输出参数
input [3:0] a;
output [3:0] b;
inout [3:0] c;
begin
// task 体
end
endtask
或者
task task_name(input [3:0] a, output [3:0] b);
begin
// task body
end
endtask
然后调用
reg [3:0] x, y;
initial begin
task_name(x, y);
end
repeat#
repeat (10) @(posedge clk);
等待10次时钟上升沿。
repeat (10) begin
// 多条语句,10次任务
end
wait#
等待直到条件为真
wait (条件表达式);
文件处理#
$fmonitor 监控变量并写入文件 自动追踪变化并记录
$fdisplay 输出格式化数据到文件 手动写入一行,含换行
$fopen 打开文件以写入 返回文件描述符
$fclose 关闭文件 对应 $fopen
$readmemh 从文件读入内存(十六进制) 初始化内存用