后端验证请教
时间:10-02
整理:3721RD
点击:
我是一个IC菜鸟,到现在只是稍微走过数字流程,但真正做设计的时候,碰到很多疑问和困难.以下是我针对一个数字设计sigma的流程,其中碰到很多问题,希望大家指点一下我的错误之处.帮帮我..多谢了①我用modelsim进行行为级仿真,得到了想要的波形结果.证明功能正确,
②将代码用DC综合,报告中没有任何违例,同时也用命令(set_fix_hold)修复了hold的违例.得出网表之后sigma.v也读出了sigma.sdf文件,然后用VCS进行仿真,并加载了DC读出的sigma.sdf,VCS -f sigma.f -v smic18.v -debug.但结果得出来的波形与前仿不一样,时序有点混乱..但我听别人DC的sdf文件不准,所以没在意这次综合后仿真(另:我单独用综合后的网表仿真,不加载.sdf文件,波形也是不准确的,时序乱的,输出多了些数据)
DC中的关键时序设置
create_clock -name "clk" -period 50 -waveform { 025 }{ clk}
set_clock_uncertainty -setup 0.3 [get_clocks clk]
set_clock_uncertainty -hold 0.3 [get_clocks clk]
set_clock_latency -rise 3 [get_clocks clk]
set_clock_latency -fall 3 [get_clocks clk]
set_clock_transition -min 0.25 clk
set_clock_transition -max 0.3 clk
set_input_delay -clock clk 28 k
set_input_delay -clock clk 28 fcw_i
set_output_delay -clock clk 16 dout
③然后用DC产生的sigma.sdc,sigma.v加载到encounter里布局布线,中间过程也多次修复setuptime 和holdtime的违例问题,时序报告中没有出现违例情况.最后产生后仿真的网表sigma_pre.v,读出了sigma_encounter.sdf和sigma.spef寄生参数文件.
④将后仿真的网表sigma_pre.v读入PT中,设置有关时序,读入sigma_encounter.sdf和sigma.spef,我先用DC综合时的时序脚本来设置PT中的时序,但结果有很多违例,大到2.67ns.
⑤然后我开始修改PT中的时序设置如下:
set_clock_uncertainty -setup 0.15[get_clocks clk]
set_clock_uncertainty -hold 0.15 [get_clocks clk]
set_clock_latency -rise 0.5 [get_clocks clk]
set_clock_latency -fall 0.5 [get_clocks clk]
结果使PT中的报告中,消除了所有时序违例情况.再从PT中读出新的sigma_pt.sdf文件,用来后仿真.
⑥接着用VCS后仿真,,加载sigma_pt.sdf.和encounter产生的后仿真网表sigma_pre.v.结果波形还是不对,时序乱的..输出中多了很多输出数据.
⑦我已苦苦寻找问题的根源很久了,但始终找不出来,请求各位大侠的指点,,,多谢了
②将代码用DC综合,报告中没有任何违例,同时也用命令(set_fix_hold)修复了hold的违例.得出网表之后sigma.v也读出了sigma.sdf文件,然后用VCS进行仿真,并加载了DC读出的sigma.sdf,VCS -f sigma.f -v smic18.v -debug.但结果得出来的波形与前仿不一样,时序有点混乱..但我听别人DC的sdf文件不准,所以没在意这次综合后仿真(另:我单独用综合后的网表仿真,不加载.sdf文件,波形也是不准确的,时序乱的,输出多了些数据)
DC中的关键时序设置
create_clock -name "clk" -period 50 -waveform { 025 }{ clk}
set_clock_uncertainty -setup 0.3 [get_clocks clk]
set_clock_uncertainty -hold 0.3 [get_clocks clk]
set_clock_latency -rise 3 [get_clocks clk]
set_clock_latency -fall 3 [get_clocks clk]
set_clock_transition -min 0.25 clk
set_clock_transition -max 0.3 clk
set_input_delay -clock clk 28 k
set_input_delay -clock clk 28 fcw_i
set_output_delay -clock clk 16 dout
③然后用DC产生的sigma.sdc,sigma.v加载到encounter里布局布线,中间过程也多次修复setuptime 和holdtime的违例问题,时序报告中没有出现违例情况.最后产生后仿真的网表sigma_pre.v,读出了sigma_encounter.sdf和sigma.spef寄生参数文件.
④将后仿真的网表sigma_pre.v读入PT中,设置有关时序,读入sigma_encounter.sdf和sigma.spef,我先用DC综合时的时序脚本来设置PT中的时序,但结果有很多违例,大到2.67ns.
⑤然后我开始修改PT中的时序设置如下:
set_clock_uncertainty -setup 0.15[get_clocks clk]
set_clock_uncertainty -hold 0.15 [get_clocks clk]
set_clock_latency -rise 0.5 [get_clocks clk]
set_clock_latency -fall 0.5 [get_clocks clk]
结果使PT中的报告中,消除了所有时序违例情况.再从PT中读出新的sigma_pt.sdf文件,用来后仿真.
⑥接着用VCS后仿真,,加载sigma_pt.sdf.和encounter产生的后仿真网表sigma_pre.v.结果波形还是不对,时序乱的..输出中多了很多输出数据.
⑦我已苦苦寻找问题的根源很久了,但始终找不出来,请求各位大侠的指点,,,多谢了
aaaaaaaaaaaaaaaaaaaaaaa
整个流程好复杂的样子,LZ把前端到后端全做了个遍了。占个位,倾听大牛们的指导……
偶也来占个位,感觉跟我现在做的事情流程很像
其实我也有过疑惑,以前在学校学习IC设计,cadence的功能已经很强大了,可以偶尔老师还是会使用命令去跑仿真,这是为什么呢?正在学习中,同进步!