1.Verilog的运行方式
一阴一阳之谓道 《易经》
0 介绍
Verilog的功能有两个:
- 模拟硬件
- 测试的模拟的硬件
1.0 verilog模型框架
Verilog是一门可以来描述硬件的语言。
硬件有几个层面:
- 物理 - 材料的模型,如半导体,化学等等
- 电路 - 场效管/晶体管/mosfet的模型
- 逻辑门 - 与/或/异或门的模型
- 行为 - 数学公式的模型
Verilog可以模拟2-4,同常用的是在3-4的层面。
物理的模拟就得用其它的工具了,如hspice。这里就不赘述了。
以下会有一些列子。它们都是为了描述一个非门。
1.1 电路模型
module fei_dianlu(input jia, output yi);
nmos(yi, 0, jia);
pmos(yi, 1, jia);
endmodule;
1.2 逻辑门模型
module fei_men(input jia, output yi)
NOT(yi, jia);
endmodule;
1.3 行为模型
module fei_xingwei(input jia, output yi);
assign yi = ~jia;
endmodule
此三个模块都有同样的效果。不同任务就需要用不一样的模型编写方式。
2.0 verilog仿真框架
Verilog不仅可以描述硬件,也可以直接的测试它。
当然,也有一些工具如verilator 可以将verilog变成C++,然后用C++来测试。为了方便和容易上手,这里只会用verilog原生的测试框架来进行测试。
就是说,verilog可以用来,
- 模拟硬件
- 写测试的代码
前者已经讨论了,后者就在以下来讨论一下。
2.1 测试框架
测试框架如同C/Java的入口函数。
module main;
initial begin
//测试代码
end
endmodule
比如说,
module main;
initial begin
$display("nihao! hello world!");
$finish;
end
endmodule
3.0 合并模型和测试框架
有了模型和测试框架两者,就可以运行了。
如以下的文件fei.v,
//模型
module fei_xingwei(input jia, output yi);
assign yi = <