Logo 逆向知识库

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    从文件读入内存(十六进制)   初始化内存用