醉裡挑燈看Code
顯示具有
Verilog
標籤的文章。
顯示所有文章
顯示具有
Verilog
標籤的文章。
顯示所有文章
2026年2月28日 星期六
iverilog 硬傷
›
前幾天為了驗證 SRAM Verilog 的一個語法,直接寫一段簡化後的 code 交給 iverilog 執行,沒想到居然報出編譯錯誤。 簡單看一下看不出個所以然,還好這是在客戶工作站,馬上請出 xrun 來編譯,xrun 輕鬆就告訴我錯誤是因為我誤用了 Verilog 關鍵字...
2026年2月12日 星期四
Simulation 軟體遇到 primitive cell 未定義問題
›
各家 PDK 的 simulation model,都會有所謂的 primitive cell,一般來說,會放在同個檔案的下半部。 以 xrun 來說,不管我用 -v -y 還是什麼 AI 建議的方式,都不能解決這種未定義的問題。 訊問 AI 的結果,AI 只會一直在跟我鬼打牆,...
2026年2月8日 星期日
真是顆爛蘋果
›
早上想要合成 Cadence 範例的 design 得到一個簡單的 netlist,好讓學弟妹 try command 時比較方便,雖然這個 EDA 我也是第一次用,但我好歹大大小小也用了幾 10 種以上的 tool,不料在 read design 就失敗,如果用 SytemVe...
2026年2月3日 星期二
空明拳第一路 - 空碗盛飯
›
跟 SRAM 訊號奮鬥了一天,除了稍微關心一下學弟妹外,其餘都在看我的波形。 明明所有的 input 我都 follow 了,已經沒有 unknown 訊號,沒想到一個 miscompare 都沒少? 這時能做的事就是放空自己,明天再來一遍,只要按部就班的從頭檢查一遍,我想答案就...
2025年8月3日 星期日
force, release, deposit command
›
一般來說,當我們 Testbench 測試時若遇到結果不如預期,往往都是某些訊號忘了設定,此時使用 force 便可以輕鬆搞定。 這樣的 case 一般不需要用到 release 解除原本的 force。 但換句話說,如果是需要 release 的 case,EDA 廠商的 Tc...
2025年7月20日 星期日
電路是個很神奇的東東
›
雖然 debug 很煩,很多時候會找不到方向,還有問題一直無法收斂,但多少還是可以從中學到一點新知識。 電路是個很神奇的東東,可能只是某一個 bit 不對,就導致整個 simulation 不如預期。 昨天剛好跟同事討論到 $display 出現了 xX 的字眼,查了一下,才知道...
2025年7月5日 星期六
動態改變 Verilog 選項
›
很多時候,工作就是一連串的取捨。 以 Verilog 來說,`ifdef 是編譯時期決定的,可以用這個來決定 Verilog 的行為。 但如果我們想要增加功能,我們就必須重新 define 新的 macro 並重新編譯才行。 想要動態改變 Verilog 選項,就必須使用 $te...
2025年7月3日 星期四
fsdb 替代方案
›
雖然在 github 找了幾個關於 fsdb 的替代方案,不過 Windows 上並沒有合適的檔案可供測試,故暫時無法得知一些替代方案是否可以解決? 看起來除了控制 VCD 的 level 與 instance 層級之外,目前的最好解法便是在適當的地方,呼叫系統指令暫時關掉不想要...
2025年7月1日 星期二
沒事多讀規格書
›
原本我以為 timescale 是可以細到針對個別 Verilog 設定XD 昨天在 2005 規格書好像沒有看到?可能是跟我邊分心連到工作站做事有關,不過卻意外多知道一個函數 $printtimescale( ),可以印出目前檔案的 timescale 設定。 今天突然想到,自...
2025年6月29日 星期日
1'bx = false
›
果然跟我想的一樣,1'bx 在 Verilog 中屬於 false 的情況。 我的 Testbench 結束條件是某個 register bit != 1,IP Vender Testbench 的結束條件是判斷 bit == 1'b1,就會繼續在 while ...
2025年6月12日 星期四
Verilog - Implicit declarations
›
在 Verilog 2005 4.5 中提到了 Implicit declarations。 簡單來說,變數可以直接使用XD 在我這種寫純C 出生的看來,這種 coding 真的是大逆不道! 如果只是一個地方忘記宣告就算了,偏偏我看到的卻是幾乎所有的變數都這樣使用,重點是這個 T...
2025年6月4日 星期三
原來我對 Verilog 理解有誤
›
一直以為在 Verilog 中,想要用某個 module,一定要建立一個實體,沒想到好像不是這樣? 這幾天又把手上的 IP test 相關 flow 又看更深了一層,在看的過程中就覺得哪邊怪怪的,原來是 module 不用一定要建立實體? 晚上回到家,寫了一個測試來驗證,好像真的...
2025年5月27日 星期二
Vim vtags
›
雖然經過這一年的洗禮,我已經習慣了 Vim,也把自己購買放在公司專用的 UltraEdit 移除了。 即便上星期寫了一個 trace variable 並顯示位於哪個 module 的 Vim function ,想要好好在 netlist 中 trace variable 還是...
2025年3月7日 星期五
Verilog $value$plusargs
›
平常用 iverilog 時,最常使用的是 -D 選項,此選項是 for 編譯時期使用。 如果我們想要在 simulation 時期傳遞參數,就必須使用 Verilog-2001 新增的語法 $value$plusargs 。 既然是 simulation 時期,故必須在模擬時傳...
2024年9月7日 星期六
又是 Verilog
›
前幾天為了快速讓 DC 可以往後跑下去驗證環境是否正常,還沒等到樓上同事的回覆,我就已經先改好了,在我看了大神的幾篇 race conditon 文章後,個人覺得從 = 改成 <= 的結果是一樣的,畢竟在那個 T 中,外面取 signal 的其他 module,如果本身判斷...
2024年8月25日 星期日
Verilog 里程碑
›
Verilog 真的是很神奇的一門語言! 有時候覺得懂了,有時候卻又覺得什麼都不懂!至少無法像我會的其他程式語言一樣,可以隨心所欲的拿它來解決任何問題。 HDLBits 是一個很好的網站,可以拿它來學習 Verilog,但它有一些缺點,我們無法看到它的 Testbench,所以有...
2024年8月17日 星期六
2024 week 33 新玩意
›
01. Synthesis area improvement 這兩個禮拜除了研究 Verilog race condition 現象外,其餘時間都在包 SRAM wrapper! 部門資深同事著實太忙,想說自己來研究一下好了,Width 還算簡單,但 Depth 就需要稍微想一下...
2024年8月11日 星期日
Verilog race condition example
›
在 IEEE Std 1364-2005 Section 11 提到 Event simulation 和 stratified event queue 等概念,雖然只有 4 頁,但卻很難用自己的話來闡述它。 簡單來說,event 在執行時,會將其加到 event queue 並...
2024年3月23日 星期六
這週新玩意
›
01. Verilog 奇怪語法 wire [63:0] data; wire [7:0] array [7:0]; array [0] = data[0+:8] 前面指的是 base,後面指的是寬度,意思是從 base + width 的範圍,也就是等於 data[8:0]。...
2023年12月27日 星期三
iverilog + GTKWave 使用小技巧
›
https://cse.iitkgp.ac.in/~wbcm/wbcm/notices/public/cs290022020s/Icarus_Verilog_GTKWave_guide.pdf 這應該是我看過寫得最好的文章了。 除了教你如何 dump array,也教你如何儲存設...
›
首頁
查看網路版