關於initial是否可以綜合的問題

2021-10-05 01:53:53 字數 1067 閱讀 1548

1.在quartus或者ise中用下面這種簡單的initial初始化,是不會報錯的。

2.但是在initial塊中給wire賦值是會報錯的

module a(out)

;output wire out;

initial begin

out = 1'b1;

endendmodule

從語法上來說,這是因為程式塊中被賦值的只能是暫存器型別的變數;從物理意義上來說,只有有記憶的單元才能被賦初值。

initial一般是用於測試時對外部輸入訊號進行初始化而引入的。上面情況1就只是賦初值

綜合指的是生成實際的電路,這些東西都是為了**而引入存在的,所以他們不可綜合。

所以問你initial可不可以綜合,答不可以就行了。

補充initial被一些綜合器視為不可綜合的語法,通常用於**的testbench模組中對激勵向量的描述或用於給暫存器變數賦初值,而在實際電路中賦初值是沒有意義的,在綜合時會被忽略,但卻可以在可綜合模組中對儲存器載入初始化檔案,這屬於一種可綜合的行為,但不能就因此說initial就是可綜合的語法,所以不要輕易在可綜合的模組中使用initial,或者乾脆最好不要用。

補充2:2020.4.30

initial只能給變數賦初值,且只能賦確定值0和1,不能把某一變數值賦給另一變數值當作初值。

module top_module(

input [399:0] a, b,

input cin,

output cout,

output [399:0] sum );

reg ci,co;

genvar i;

initial ci=cin;

比如這樣是不被允許的。

判斷是否可以關燈

description 給你 n 個開關和 m 個燈。第 i 個開關開啟某一些燈。該資訊以矩陣形式 n 行 m 列 如果第 i 個開關能開啟第 j 個燈,則 a ij 1,如果不能開啟則 a ij 0 最初,所有 m 燈都關閉。開關狀態僅能從 關 變為 開 這意味著如果兩個或更多開關連線到同乙個燈,...

基業是否真的可以長青?

基業長青是一本書。這本書 的是企業長生不老的秘訣。人不可以長生不老 至少目前不可以 企業是否能夠做到長生不老?微軟過了他的巔峰時刻,被google超越了 google正處在他的巔峰時刻,可是他的超越者已經出現了 按照目前的形式,facebook似乎要超越google。那麼facebook之後,肯定還...

js判斷是否可以列舉

列舉是指物件中的屬性是否可以遍歷出來,再簡單點說就是屬性是否可以列舉出來。for in 遍歷自身的和原型上繼承的可列舉屬性 object.keys 遍歷自身可列舉屬性 json.stringify的使用 字串化自身可列舉屬性 let obj object.defineproperty obj,hob...