pretty code

2025年6月12日 星期四

Verilog - Implicit declarations

在 Verilog 2005 4.5 中提到了 Implicit declarations。

簡單來說,變數可以直接使用XD

在我這種寫純C 出生的看來,這種 coding 真的是大逆不道!

如果只是一個地方忘記宣告就算了,偏偏我看到的卻是幾乎所有的變數都這樣使用,重點是這個 Testbench 還是御三家中的某個 IP 的 Testbench。

一個要錢的東西你這樣寫,我只想問候他老母?

不過也不排除這樣寫是故意的,大大增加你修改 Testbench 的不便XD

雖然我現在就是要確定你每個 net 給什麼值,假設你在這個 Testbench 中 include 一堆檔案,我得一個一個看過去才知道你到底是否有在哪個地方宣告並賦值?這大大增加了我 trace code 的不便!

尤其這裡用了一堆 define,其對應的 endif 也沒給註解!

我實在是很難一眼看出我要的東西到底在不在。

第一個問題很簡單,如果是自己寫的 Verilog,加上下面語法即可報錯。

`default_nettype none


第二個問題就有點小麻煩

理論上如果我知道所有的 define 是什麼,我是可以透過 iverilog 的前置處理來幫我去掉不要的 define,再用 sed 去掉拿掉 define 留下來的連續空白,我就可以有一個清爽的 Testbench 來用。


但問題是我連完整的 Testbench 都有缺,我根本無法確認所有的 define?

沒有留言: