ws's profileBad TimingPhotosBlogLists Tools Help

Blog


    April 22

    iclab 6

    從lab3之後都是 FSM,太晚進入狀況真的有點糟。

    這次的題目是在某個 8 bit port讀入 ASCII表示的羅馬數字,同時讀取 op code。在輸入資料結束時開始計時20個 cycle之內要把運算結果用 ASCII表示的羅馬數字表示出來。像是 VII 的平方是 IVIX,MXXIV的平方根是XXXII。輸入的值和輸出的值都限制在1~3999之內。每個cycle限時5ns。看面積比輸贏。

    只用單純的想法做下去的話,在input的地方設計一個FSM,一邊讀一邊算出輸入的真實值是多少;之後再經過運算後,把結果分成4位數。再用個FSM把這4位數連續的輸出。

    這次遇到幾個問題:

    design compiler在 datapath長過 cycle time constraint太多的時候會自爆 fatal errorblue-screen-of-death-t-shirt ,還印出一堆stack pointer叫你抄下來打 OneCall通知 Synopsys。真糟糕,大家好似都寫的十分完美,不曾試出這個問題。這一切果然都是我的錯。You fatal synopsys。這次我遇到這事情是因為在把10進位的4位數的各位數值拆開時, (X/100)%10 會花掉太多時間。所以可以用的方法就是拆成2半,先算Y=X/100 再算 Z=Y%10。

    再來就是這種有很多表的電路,如果不是用程式產生verilog,很容易因為手殘打錯字,像是把VIII打成VII之類的。

    最後就是iclab名物:潛規則。有些東西助教不講,同學不提,完全沒有人問,但大家卻似乎都做的出來,看來我也該努力了解他們用的語言才是。畢竟如果之後去EDA公司的話總還是要聽的懂的。

    最後再來一張該死的 fatal error,紀念一下這個拖住我20小時的非錯誤訊息。

    steve jobs fatal error