第一步:Makefile仿真命令

one:
    ncverilog +access+rwc +nc64bit +loadvpi=finesim.so:finesim_startup -f run.f

第二步:环境结构

(1)以模拟为顶层,顾名思义是把CDL网表中某一个模块替换为数字的function,其余全是CDL,以上图为例,把其中inv替换为数字的function。

(2)需要文件:testbench.v、反相器inv的function(inv.v)以及run.f。

(3)run.f内容如下

./testbench.v
./inv.v

(4)testbench.v内容如下:

module testbench;

//------------------------
inv  U_inv(
.A   (i),

.Z   (o)
);

//------------------------
initial
begin
  $fsdbDumpfile("waves.fsdb");
  $fsdbDumpvars;
  $fsdbDumpflush;
end

//------------------------
initial
begin
  $finesim_config(".finesim -auto -np 8 -o sim sim.sp");
  $finesim_instance(U_inv,"x1.U_inv");
end


endmodule

注:

x1.U_inv 为反相器在CDL网表里的层次信息。

第三步:激励文件sim.sp撰写

.inc './xxx.cdl'
 
.option finesim_speed = 1
.option finesim_mode  = promd
.option finesim_fsdb_split_time="1m"
 
x1 in1 in2 in3 out1 out2 out3 top

.SUBCKT inv i o
.ENDS

.option post probe
.probe v(*) level = 1
.probe i(*) level = 1
 
.lprobe level = 2 v(*) high = 4.5 low = 0.4
 
.tran 1n 2m
 
.end

注:

1、 x1 in1 in2 in3 out1 out2 out3 top 端口顺序一定要和CDL的顶层端口顺序一致。

2、.SUBCKT inv i o 端口顺序一定要和反相器的端口顺序一致。

3、finesim_mode 有很多种模式,可根据电路本身需求进行选择。

      spicead  :high precision analog circuits

      spicehd :high sensitive analog circuits

      spicemd :general spice mode for all circuits types

      spicexd :mixed signals design/extracted post layout

      prohd :large mixed signal design/leakage/power simulations

      promd :timing simulation

      proxd :functional verifications

第四步:运行Makefile仿真命令

运行make one 仿真命令,会生成两个sim.fsdb,因为 finesim_fsdb_split_time="1m" 这条命令会把波形以1m为时间节点分割成两个fsdb。

更多推荐