马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
反向出来的6万门左右的数字电路网表:……………………
……………………
aoi21X1 X12335 ( .A1(X7804_Y), .A2(X6876_Y), .B(X9756_Y),
.Y(X12335_Y));
or2X4 X12294 ( .A(X11949_Y), .B(X7565_Q), .Y(C59));
nor3X2 X12328 ( .A(X10949_Y), .B(X10967_Y), .C(X8651_Y),
.Y(X12328_Y));
……………………
……………………
全芯片做SPIC仿真功能OK
想在系统上做FPGA验证,为了用ISE综合,对网表中每个cell建了模型,如:
`timescale 1ns/10ps
`celldefine
module aoi21X1 (output Y, input A1, A2, B);
assign Y = !( (A1 && A2) || B );
specify
(A1, A2, B *> Y) = (0.185,0.072);
endspecify
endmodule
`endcelldefine
`celldefine
module or2X4 (output Y, input A, B);
assign Y = A || B;
specify
(A, B *> Y) = (0.108,0.084);
endspecify
endmodule
`endcelldefine
之前在一个只有几千门并且只有一个慢速(200K)时钟的数字电路项目用这种方法做FPGA验证没有问题,后端实现流片也OK,但现在这个项目规模较大,而且内部时钟使用较为复杂,非单一时钟,时钟频率也较高,20M左右。在FPGA验证过程中发现behavioral仿真没问题,但FPGA功能实现不了,于是做了FPGA综合后,布局布线后之类的仿真,发现已经出错,没有功能,发现和模型中的延时参数有关,因为这个延时参数只在行为仿真中有效,如果把模型中的延时参数去掉或改为0,连behavioral仿真都过不了,时序出错了。
后来用behavioral仿真通过一个个cell试,发现总共有十来个cell的延时参数不能去掉,去掉时序就会出错,仿真就过不了。
为了解决这个问题,人为地将必须有延时的cell输入端口加入一定delay(如2输入与非门,将A和B都用FPGA板的高频时钟打一拍,延时大概10ns),这个方法用整个网表中的一个小模块实验成功,FPGA实现也OK。但是对于整个网表,有些CELL必须有延时,但是延时又不能太大,只能0.15ns左右,否则行为仿真时序都会出错,FPGA后端实现肯定失败了,这么小的延时很难控制了,也没办法通过高频时钟打一拍实现了。
请教各位大神,对这种情况有什么好的建议。对这种规模的反向数字电路做FPGA验证有什么好的方法和经验。
PS:最终流片会用和原芯片同级别工艺的另一公司的标准单元库,这样需要把提出来的这个网表中的单元替换成我们将要流片使用的标注单元,然后跑PR,请问这个流程中,有什么要注意的,尤其用反提出来的网表跑PR,想把原网表中的一堆buffer都去掉,在APR时约束该如何写,如何处理最好,请有经验的人不吝赐教!!!!! |