在GitHub上下载COFFE的源码,去release下下载的根本就不行,只有在master下下载的才可以,宇航给我一些他当时调试的步骤,我顺利的跑通了COFFE。
首先是学院服务器上才有hspice,并且系统是Redhat,hspice没有加PATH,所以默认情况下命令hspice
无法调用hspice,需要命令setenv PATH /apps/EDAs/synopsys/hspice/hspice/bin/:$PATH
将hspice添加进PATH里面,之后采用命令hspice64
来调用spice,并且setenv这条命令是暂时的,当exit后还需要再次执行。
对hspice添加PATH以后,对于COFFE的代码中,coffe文件夹下的spice.py中167行的hspice
应该修改为hspice64
,当然也可以不配置setenv环境变量直接把这行代码的hspcie
改为/apps/EDAs/synopsys/hspice/hspice/bin/hspice64
,更加省力。
之后在COFFE-master目录下输入命令python coffe.py input_files/xxx -s initial_sizes/xxx
回车即可跑通。
python2 coffe.py input_files/bulk_example.txt -s initial_sizes/ffpt_init.txt
亲自测试下来COFFE根本就不太好用,input_files里面有bulk、finfet和fracture三种文件,其中bulk和finfet都有pt(pass transistor)和tg(transmission gate)两种,所以input_files共5个文件。
fracture里面除了可以选择finfet、bulk以及定义pt还是tg之外还有有flut、carry_chain、bram三种硬核,flut和carry_chain是一起的,所以实质只有两种,但是实际操作中不论是bulk还是finfet选择tg时根本就跑不通,会报错num_transitor_load is not defined。
这样就只剩下了bulk或者finfet的pt结构,而finfet根本无法与flut(carry_chain)或者bram一起仿真,也会报错。这样就只剩下bulk_pt和flut(carry_chain)、bram,而bram也有bug跑不通。。。所以就只能bulk_pt和flut(carry_chain)跑了。
initial_size里面也只有ffpt_init.txt可以用,我备份了fracturex0.txt后配置了一下fracturex0.txt为Rsel=cd,Rfb=abc、bulk、pt、flut(carry_chain)并且设置independent_inputs=2。