前言
分清楚各種仿真間的關系,工具采用quartus prime16.0,仿真工具采用modelsim10 ae版;項目:led_display;
流程
1.RTL行為級仿真:也叫功能仿真,這個階段的仿真可以用來檢查代碼中的語法錯誤以及代碼行為的正確性,其中不包括延時信息。如果沒有實例化一些與器件相關的特殊底層元件的話,這個階段的仿真也可以做到與器件無關。
需要的文件:編寫的verilog源文件以及tb文件。如果用到了pll等ip核,需要掛載器件庫文件。
1 #set the sim home dir ; 2 set sim_home D:/work/led_display/sim 3 #set the src code home dir; 4 set src_home D:/work/led_display/src 5 vlib ${sim_home}/work 6 vmap work ${sim_home}/work 7 vlog ${src_home}/*.v 8 vsim -novopt -t 1ns -L altera_ver -L altera_mf_ver -L cycloneive_ver -L sgate_ver -L lpm_ver work.led_display_tb 9 view wave 10 add wave * 11 run @600ns
可以看到波形無延時;
2.門級仿真:也叫綜合后仿真,綜合后生成的網表文件(.vo)加tb仿真;網表是與器件有關的,所以要掛載好相關器件庫文件。
對於quartus生成的vo文件,首先要注釋掉其中的掛載sdo文件語句,否則仿真是時序仿真,因為添加了sdo延時文件:
需要的文件:vo網表文件以及tb文件。需要掛載器件庫文件。
1 #set the sim home dir ; 2 set sim_home D:/work/led_display/sim 3 #set the src code home dir; 4 set src_home D:/work/led_display/src 5 vlib ${sim_home}/work 6 vmap work ${sim_home}/work 7 vlog ${src_home}/led_display_8_1200mv_85c_slow.vo ${src_home}/led_display_tb.v 8 vsim -novopt -t 1ns -L altera_ver -L altera_mf_ver -L cycloneive_ver -L sgate_ver -L lpm_ver work.led_display_tb 9 view wave 10 add wave * 11 run @600ns
對於本栗子,可以看到門級仿真引入了中間態。
忽略不計。
3.時序仿真:也叫后仿真。網表文件加延時,仿真中會包含延時信息。
需要的文件:vo網表文件以及tb文件以及延時文件sdo(采用腳本掛載)。需要掛載器件庫文件。
1 #set the sim home dir ; 2 set sim_home D:/work/led_display/sim 3 #set the src code home dir; 4 set src_home D:/work/led_display/src 5 vlib ${sim_home}/work 6 vmap work ${sim_home}/work 7 vlog ${src_home}/led_display_8_1200mv_85c_slow.vo ${src_home}/led_display_tb.v 8 vsim -novopt -t ns -L altera_ver -L altera_mf_ver -L cycloneive_ver -L sgate_ver -L lpm_ver -sdftyp /led_display_tb/u=${src_home}/led_display_8_1200mv_85c_v_slow.sdo work.led_display_tb 9 view wave 10 add wave * 11 run @600ns
/led_display_tb/u 的意義:前面是tb名,后邊是實例化led_display的名字。
如上圖所示,可以看到器件延時大約4ns,包含了延時信息。
以上。