當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > FPGA培訓(xùn) > 認(rèn)識(shí)FPGA中的testbench
認(rèn)識(shí)FPGA中的testbench
時(shí)間:2018-10-10 來源:未知
testbench就是對寫的FPGA文件進(jìn)行測試的文件,可以是verilog也可以是VHDL。verilog和VHDL的國際標(biāo)準(zhǔn)里面有很多不能被綜合實(shí)現(xiàn)的語句,比如initial,forever,repeat,延時(shí)語句#1等等,這些語句就是用來測試的時(shí)候使用的。運(yùn)行環(huán)境一般是ise或者vivado或者quartus自帶的仿真工具,或者如modelsim一樣的第三方仿真工具。

測試機(jī)制
任何一個(gè)設(shè)計(jì)好的模塊,都有輸入和輸出,此模塊是否滿足要求就是看給定滿足要求的輸入,是否能夠得到滿足要求的輸出。所以testbench的測試機(jī)制就是:用各種verilog或者VHDL語法,產(chǎn)生滿足條件的激勵(lì)信號(hào)(也就是對被模塊的輸入),同時(shí)對模塊的輸出進(jìn)行捕捉,測試輸出是否滿足要求。如下圖,產(chǎn)生激勵(lì)輸出驗(yàn)證模塊兩個(gè)模塊都屬于testbench,最好的輸出驗(yàn)證模塊最終只需要給一個(gè)pass和fail的答案出來就可以了。不管是用一個(gè)信號(hào)表示pass和fail還是用$display()函數(shù)打印,最終簡單明了的給出過或者不過的信息就好了。請大家寫仿真文件的時(shí)候盡量做到這點(diǎn)。
運(yùn)行順序
跟大家解釋一點(diǎn),所有testbench本質(zhì)上都是串行執(zhí)行,因?yàn)樵贑PU環(huán)境下,沒有可靠并行執(zhí)行的能力。所有并行的語句,比如兩個(gè)always模塊,fork join語句塊,都是軟件模擬并行執(zhí)行的。所以老一點(diǎn)的編譯器,信號(hào)定義要在initial語句前面,initial的信號(hào)要先有初始值后面的語句才能從給定初值開始執(zhí)行。所以大家寫testbench的時(shí)候,要注意,最好先定義信號(hào),再寫initial語句,后面的語句交換順序不影響,軟件可以識(shí)別并按照IEEE標(biāo)準(zhǔn)的順序去執(zhí)行。
如果一個(gè)模塊里面想用并行執(zhí)行語句用fork join語句,順序執(zhí)行用begin end語句。initial語句可以寫多個(gè),都是并行執(zhí)行的,當(dāng)兩個(gè)信號(hào)在initial沖突的時(shí)候,會(huì)先執(zhí)行前面的initial的值。
華清遠(yuǎn)見90+項(xiàng)目獲批!教育部2021最新協(xié)同育人項(xiàng)目名
華清遠(yuǎn)見榮獲2021騰訊教育“年度口碑影響力職業(yè)教育品
華清遠(yuǎn)見受邀參加2021年武漢民辦高校信息學(xué)科合作聯(lián)盟
華清遠(yuǎn)見協(xié)辦2021年貴州省計(jì)算機(jī)學(xué)會(huì)學(xué)術(shù)年會(huì),共同探
華清遠(yuǎn)見受邀出席四川省第十六屆高校計(jì)算機(jī)學(xué)院院長論
智啟非凡·2022華清遠(yuǎn)見課程產(chǎn)品發(fā)布會(huì)
華清遠(yuǎn)見副總裁再訪阿里云,深度合作未來可期!
華清遠(yuǎn)見受邀出席第三屆西部高校計(jì)算機(jī)學(xué)院院長論壇
華清遠(yuǎn)見受邀參加湖南省人工智能學(xué)會(huì)2021學(xué)術(shù)年會(huì)
再次榮獲兩項(xiàng)軟件著作權(quán)登記證書 華清遠(yuǎn)見教研硬實(shí)力
