Skip to content
This repository has been archived by the owner on Feb 8, 2023. It is now read-only.
/ ICDC-undergrad Public archive

Integrated Circuit Design Contest (ICDC) - 大學院校積體電路設計競賽

Notifications You must be signed in to change notification settings

ypctw/ICDC-undergrad

Repository files navigation

ICDC

ICDC-B 2015-II(Graduate) - Image Sorting Engine

ICDC-B 2017-I(Graduate) - Distance Transform

  • DT.v

困難點

  • 難點(1):Latch
    • 假設一個 reg 出現 latch 一定要處理,有可能僅只有附值為1忘記給0
  • 難點(2):Ram
    • 這邊可以使用RAM去把ROM的值存起來
  • 難點(3):面積
    • 如果使用Default可以避免latch但是面積會小幅增加(對於壓面積不利)

Conclusion

  • 本題比較需要看波形圖,尤其是讀檔案的部分需要特別注意

ICDC-E 2019-I(Undergraduate) - Image Convolutional Circuit Design

  • CONV.v

注意:

  • 要將 dat_univ 資料夾向上層移動

困難點

  • 難點(1):小數點乘法
    • 解決方式:(~target+1)將質先轉乘正數,乘完之後再去變號
  • 難點(2):小數點進位
    • 解決方式:直接位數延長,看小數點後第16位為一還是0
  • 難點(3):面積
    • 解決方式:共用乘法器,用assign!
  • 難點(4):initial不要用
    • 直接放在reset裡面!

ICDC-E 2018-I(Undergraduate) - Image Display Control

ICDC-E 2019-I(Undergraduate) - Image Convolutional Circuit Design

ICDC-E 2020-I(Undergraduate) - String Matching Engine

Viewpoint

  • 使用 combinational Circuit
always @(*) 
begin
    is_D = 0;
    is_H = 0;
    if (str_idx == pat_max) is_H = 1;
    else if (string[str_idx - pat_max - 1] == Space) is_H = 1;
    else is_H = 0;
        
    if (str_idx == str_max) is_D = 1;
    else if (string[str_idx + 1] == Space) is_D = 1;
    else is_D = 0;
end
  • 將Finite State Machine放到不同Always中

難點:

  • 難點(1):RTL Simulation 成功 BUT Gate-Level Simulation 失敗
    • 如果將cycle條大還是沒用,那代表電路設計有問題
  • 難點(2):combinational Circuit (不要被Sequential Circuit 給綁著)

ICDC-E 2021-I(Undergraduate) - Geofence

ICDC-E 2022-I(Undergraduate) - Job Assignment Machine

About

Integrated Circuit Design Contest (ICDC) - 大學院校積體電路設計競賽

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages