pretty code

顯示具有 SystemVerilog 標籤的文章。 顯示所有文章
顯示具有 SystemVerilog 標籤的文章。 顯示所有文章

2026年2月12日 星期四

Simulation 軟體遇到 primitive cell 未定義問題

各家 PDK 的 simulation model,都會有所謂的 primitive cell,一般來說,會放在同個檔案的下半部。

以 xrun 來說,不管我用 -v -y 還是什麼 AI 建議的方式,都不能解決這種未定義的問題。

訊問 AI 的結果,AI 只會一直在跟我鬼打牆,後來還是靠自己把文件翻了個朝天,才順利找到解決方式。

不論下什麼關鍵字在 Google 都搜尋不到,即便我已經知道關鍵字是什麼。

個人猜想,解決方式應該是在各 EDA 的論壇裡面,因為我沒有帳號,故也無從得知真相。

總之,只要分別用以下指令,就可以解決 primitive cell 在後面定義的問題。

xrun  -liborder
vcs +libordr

2026/02/26 更新

同事今天遇到加了這個選項後還是會報錯的問題,一時之間我也不知道為什麼?改天有空再去工作站確認一下文件。

一直覺得這行好像在做工,跟 coding 半點毛都沒關係。

2026年2月8日 星期日

真是顆爛蘋果

早上想要合成 Cadence 範例的 design 得到一個簡單的 netlist,好讓學弟妹 try command 時比較方便,雖然這個 EDA 我也是第一次用,但我好歹大大小小也用了幾 10 種以上的 tool,不料在 read design 就失敗,如果用 SytemVerilog 格式說我的 design 用到關鍵字,改用 Verilog 2001 又說我少分號,馬的,今天很忙只有早上這一個小時可用,EDA 公司 release 出來的東西還不能直接用,一整個火冒三丈,再加上這個星期想要補齊音樂歌單又只能一首一首買,真是讓我想罵髒話,我最討厭做事情不能收尾卡在那邊的感覺!

好不容易在查 itunes 歌名為什麼中英文混雜時,看到有所謂禮品卡的方式,但是去到 App Store 頁面又說不能用在 itunes,Google 卻又說可以?

還好我後來總算搞懂,App Store Card 跟 App Store 禮品卡是不一樣的東西,前者只能在超商或是 PChome 購買。

堂堂蘋果公司,線上商店沒有購買 App Store Card 連結?真是顆爛蘋果無誤!

難怪我從來都不會想買蘋果商品,爛透了,Linux 如果有一萬分的話,蘋果我只願意給你 10 分,坦白說 10 分我都嫌多。

早上的時間就被這兩個公司浪費掉了,想想就生氣。

生氣歸生氣,還是要傳達正確資訊,下面是永豐金學堂—豐雲學堂整理出來的表格,還蠻清楚的。

比那官網不知所云的說明好一百倍。


2026/02/08 更新

說蘋果爛還真的沒冤枉他!晚上想要物色顆新隨身碟把購買的音樂放進車子影音系統,誰知 itunes 顯示有 222 首,進到下載資料夾卻變成 250 首?一整個莫名其妙!

動用 find 指令來確定 m4a 檔案個數以避免是否有縮圖等隱藏檔被誤統計進去,結果還真的是 250 首,作業系統沒有騙人。

改用 less 一頁一頁來確認,終於讓我知道 itunes 哪裡發神經了,原來有些歌 UI 顯示一筆,但購買下載後卻會平白無故多了一首。

害我又要花時間來整理檔案,真有你的爛蘋果。


2026/02/9 更新

下午還是花了點時間看一下為什麼沒辦法 synthesis。

-v2001 會報 error 是因為 Cadence 把 testbench 跟 design 放在同一個資料夾下,故我建立的 file_list 有包含那些檔案,拿掉就不會一直要我用 -sv 參數了。

-sv 會報 error 是因為 design 用 int 當 input port name 而 int 本身是 SystemVerilog 的 Keywords,故佛跳牆料理烹飪到會爆炸是不允許的XD


搞定之後,剩下的就是 synthesis 本身的問題了。

下面是可以 synthesis 所需要的最少指令組合。

set_db auto_ungroup none
set_db library [list xxx.lib]

read_hdl -v2001 ( -sv )  file_list
elaborate $top_name

create_clock clk_port -name CLK -period 10

check_design

syn_gen
syn_map

write_hdl > netlist.v

一開始沒有設 auto_ungroup,design 一直被 flattern,後來才發現有這個 attribute 要設定。


正事做完了,再回到 itunes 歌曲會有兩首的問題,看起來是資料庫有兩筆不一樣的描述


真是莫名其妙,既然資料庫裡有兩首,使用者點哪一首購買就給哪一首有那麼困難嗎?

2026年2月3日 星期二

前人的 Code 沒事不要改它

雖然這只是江湖傳說,但今天居然是靠這招解決問題就是了。

起頭是我需要在客戶的工作站加上一個自動化功能,產生可以跑 simulation 的 file_list。

原本的 command 會因為加了自己的 design 後,產生不出本來的 file_list,雖然我可以很容易的用 find 等技巧產生所有的清單。

但不知是我對 SytemVerilog 不熟還是怎樣?當它有 include 別的檔案時,檔案的順序性就變得很重要,不然 xrun 不開心就會報錯。

本來的想法是分開兩個 file_list,至少 before 前的 file_list 的順序是 OK 的,後面重複的,我想讓他直接以第 2 個為主就好,但是 xrun 就會產生 E,DUPIDN 的錯誤,這個錯誤也不是 -allowredefinition 可以解決的?

問了一下同事,才知道他的客戶都是把所有的檔案都展開在一個 file_list 中。

說也奇怪,簡單寫個 Tcl 比照辦理,E,DUPIDN 的錯誤就這樣蒸發了XD

改天有空,我要來好好研究一下,不然我今晚會好奇的睡不著覺,Google 雖然可惡,但應該也有人有發生過這種問題,我應該可以找到網頁才是?

2026/02/03 更新

昨天沒有睡好,腦袋無法思考,不過還是找了幾個符合我預期的答案。

這個是 Quartus 的說明,看起來順序是重要的。


這個則是 Gemini 的回答。



如果 AI 的建議為 true,我想這也是為什麼 -v 參數存在的原因,但我印象中這招似乎不是萬用,改天再來試試?

我想答案應該還是在 SystemVerilog 的規格書中,不確定是否跟 Verilog 一樣要錢?當然我可以很容易的在外國大學教授的網頁中找到 PDF 檔案,但可以花錢的我還是會花錢,除了自己貧窮買不起外XD

但是之前不知道要錢的已經下載過的檔案就不管它了,誰叫科學界還是 ISO 界為什麼那麼死要錢,我想這很大程度的限制了資訊流通,又不是每個有興趣的人都是在學校或業界,可以擁有帳號免費下載。

這就是我為什麼喜歡 Linux 以及 Open Source 的原因,好東西不就是要讓人知道?

先了解到這裡就夠了,知識往往不是一蹴可及的事,不用急。

2026/02/03 晚上更新

還是用了些方式找到 Spec 來驗證,我想這應該可以解釋順序的重要性了吧!