Diese BOOT-Regel kommt nicht etwa daher, dass die Tools zu blöde wären
oder waren. Sie hat etwas mit strukturiertem Entwurf zu tun. Ob man die
IO-Zellen in den Top-Level setzt oder in ein separates Moduls auslagert,
das ist dabei zweitrangig. Entscheidend ist, dass man die IO-Zellen von
der Logik trennt, wie Duke das macht.
Warum macht man das? Die Core-Logik arbeitet rein mit binären Werten,
Nullen und Einsen, etwas anderes kann und will man ja gar nicht
modellieren. IO-Zellen sind strukturell etwas anderes wie Gatter, und
daher beschreibt sie auch anders. Bei IO-Zellen gibt es weitere Aspekte
wie z.B. IO-Standard, Treiberstärke, etc., die man in HDL nicht
beschreiben kann. Hierfür braucht man andere Beschreibungsmöglichkeiten
wie z.B. Settings in der Projektdatei des FPGA oder anderes. Ich weiß
schon, diese Sichtweise mit den separierten IO-Zellen ist für reine
FPGA-User, die nie etwas anderes machen, nicht so einfach zu verstehen,
weil man sich darum nicht unbedingt kümmern muss. Sie ist trotzdem
richtig, in my humble opinion.
Grüße,
Harald