Verilog中的Timescale做用

不少時候,咱們拿到已有的東西理所固然的用了,其實,你真的對你所使用的東西瞭解嗎?編譯

再次犯下這樣的錯誤,是由於在把代碼從Altera 的CycloneV移植到Xilinx的Spartan6上,我遇到了很是奇怪的問題:test

在modelsim下,對Xilinx平臺下的代碼進行功能仿真,發現工程中Xilinx的IP核所有都有異常, 亂七八糟的錯。model

爲此,還向FAE求助?可是最終的問題是出如今timescale上,這裏,對timescale進行一次詳細的梳理,爲了不之後程序

還會出現相似的錯誤im

timescale是Verilog HDL 中的一種時間尺度預編譯指令,它用來定義模塊的仿真 時的時間單位和時間精度。格式以下:異常

`timescale 仿真時間單位/時間精度文件

注意:用於說明仿真時間單位和時間精度的 數字只能是一、十、100,不能爲其它的數字。並且,時間精度不能比時間單位還要大。最多兩則同樣大。好比:下面定義都是對的:時間

`timescale 1ns/1ps工作

`timescale 100ns/100nstime

下面的定義是錯的:

`timescale 1ps/1ns 仿真的單位時間是不能小於時間精度的!

時間精度就是模塊仿真時間和延時的精確程序,

回頭講講爲啥我仿真IP核會工做異常,由於個人testbench中,定義了兩個timescale,

timescale 1ps/1ps

timescale 1ns/1ps

源文件中的

timescale 1ns/1ps

 

最終的結果就致使modelsim 仿真Xilinx的IP功能時序混亂了!

相關文章
相關標籤/搜索