作者zxvc (執著)
看板Electronics
標題Re: [問題] Design Compiler- define_name_rules
時間Sat Nov 28 15:37:00 2009
※ 引述《zxvc (執著)》之銘言:
: 請問有用Design Compiler 2008.09的人有沒有發現有幾個指令好像不太有效?
: 就是:
: define_name_rules
: change_names
: report_names
: 我學長發現Design Compiler 2008.09合出來的netlist會有"\"字元。
: 我試著去測試上述指令,與manual戰鬥了一個下午,很失敗。
: 我覺得我應該沒有誤解manual,也搜過google但就是試不出想要的結果。
: 只能推論軟體有bugs。
: 我學長之前舊版的Design Compiler就沒有此問題。
: 我覺得照理來講最簡單的作法拿掉"\"可以用以下指令:
: define_name_rules myrule -restricted "\\"
: change_names -rules myrule -hierachy
: 但DC 2008.09寫出的netlist還是有"\"。
: 有沒有人遇到類似問題?
經過兩天來的戰鬥,終於把反斜線的問題給解決了,得到以下心得。
1. define_name_rules的-map的map string的格式是:
{{"pattern", "replacement"}, {"pattern", "replacement"}*}
但在使用-map時map string外部還要再加上一層{}。如:
define_name_rules MyRule -map {{{"a", "A"}, {"b", "B"}}}
(詳情請看DC manuals)
2. 如果write的Verilog netlist有incomplete net busses
(如abc[2], abc[0],卻沒有abc[1]),
或斜線"/"(如A/B, A/B/C),
那麼在用DC寫出Verilog netlist時,DC會在這些nets前加上反斜線"\"字元,
並且在最後面加上一個space character " ",
(否則NC-Verilog或ModelSim會compile失敗)。
例如:
合法: wire \abc[2] , \abc[0] , xxx;
不合法:wire abc[2] , xxx; wire \abc[2], xxx;
所以在寫出netlist前必須把"["、"]"、"/"用別的字元替換掉。
但你無法用define_name_rules的-restricted限制這些字元(原因不名)。
似乎只能用-map,如:
define_name_rules MyRule -map {{{"[", "_"}, {"]", "_"}, {"/", "_"}}}
change_names -rules MyRule -hierarchy
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.139.206.104
→ zxvc:哭哭,剛才翻了IEEE 1364-2005才知道incomplete net busses 11/28 15:59
→ zxvc:的命名是follow IEEE 1364-2005 3.7.1 Escaped identifiers。 11/28 16:00
→ zxvc:才短短的幾行字沒看到,就花費我不少時間研究。 11/28 16:03
→ zxvc:之前都以為絶不會用奇怪的字元命名,都直接忽略escaped 11/28 16:05
→ zxvc:identifiers的觀念不看。 11/28 16:05
→ zxvc:這個name rule更好: 11/28 16:25
→ zxvc:-remove_irregular_net_bus -restricted "/\[\]" 11/28 16:25
→ zxvc:不會把busses展開成難閱讀的格式。 11/28 16:28
→ zxvc:看來-restricted是不能直接處理escaped identifiers。 11/28 16:29
推 UBL:推!! 11/28 17:20
推 Trai:1 11/28 17:28